#!/bin/bash _git_prompt() { # local _FETCH=$(git fetch 2> /dev/null) local _FETCH=$(git remote update 2> /dev/null) local _BRANCH=$(git rev-parse --abbrev-ref HEAD 2> /dev/null) local _STATUS=$(git status -s 2> /dev/null) local _UNTRACKED=$(echo "$_STATUS" | grep '^??' | wc -l) local _STAGED1=$(echo "$_STATUS" | grep '^M ' | wc -l) local _STAGED2=$(echo "$_STATUS" | grep '^D ' | wc -l) local _STAGED3=$(echo "$_STATUS" | grep '^R ' | wc -l) local _STAGED4=$(echo "$_STATUS" | grep '^C ' | wc -l) local _STAGED5=$(echo "$_STATUS" | grep '^A ' | wc -l) local _STAGED=$(($_STAGED1 + $_STAGED2 + $_STAGED3 + $_STAGED4 + $_STAGED5)) local _DRC1=$(echo "$_STATUS" | grep '^ D' | wc -l) local _DRC2=$(echo "$_STATUS" | grep '^ R' | wc -l) local _DRC3=$(echo "$_STATUS" | grep '^ C' | wc -l) local _DRC=$(($_DRC1 + $_DRC2 + $_DRC3)) local _MODIFIED=$(echo "$_STATUS" | grep '^ M' | wc -l) local _CONFLICT=$(echo "$_STATUS" | grep '^UU' | wc -l) local _IGNORED=$(echo "$_STATUS" | grep '^!!' | wc -l) local _NEPOZNAM=$(echo "$_STATUS" | grep '^ A|^T |^ T|^TT|^MM|^MT|^MD|^TM|^TD|^AM|^AT|^AD|^RM|^RT|^RD|^CM|^CT|^CD|^MM|^TM|^AM|^RM|^CM|^MT|^T|^AT|^RT|^CT|^MD|^TD|^AD|^RD|^CD|^DD|^AU|^UD|^UA|^DU|^AA' | wc -l) local _STATS='' local _STATUS2=$(git status -s 2>&1 ) local _GIT_EXIST=$(echo "$_STATUS2" | grep 'not a git repository' | wc -l) ######## local _STATUS3="$(git status 2> /dev/null)" local _DIST_STRING="" local _IS_AHEAD=$(echo -n "$_STATUS3" | grep "ahead") local _IS_BEHIND=$(echo -n "$_STATUS3" | grep "behind") local _DIVERGED=$(echo -n "$_STATUS3" | grep "diverged") ######## if [ "$_GIT_EXIST" = "0" ]; then if [ ! -z "$_IS_AHEAD" ]; then local _DIST_VAL=$(echo "$_IS_AHEAD" | sed 's/[^0-9]*//g') _DIST_STRING="\e[1;36m\U2B60$_BRANCH \e[1;33m↑$_DIST_VAL\U21C4\e[0m" # push elif [ ! -z "$_IS_BEHIND" ]; then local _DIST_VAL=$(echo "$_IS_BEHIND" | sed 's/[^0-9]*//g') _DIST_STRING="\e[1;36m\U2B60$_BRANCH \e[1;31m↓$_DIST_VAL\U21C4\e[0m" # pull elif [ ! -z "$_DIVERGED" ]; then _DIST_STRING="\e[1;36m\U2B60$_BRANCH \e[4;41m✖\U21C4\e[0m" # remote chaozz else _DIST_STRING="\e[1;36m\U2B60$_BRANCH \e[1;32m\U221A\U21C4\e[0m" # remote ok fi if [ ! -z "$_DIST_STRING" ]; then echo -en "\e[0m$_DIST_STRING " # print remote fi ####### if [ "$_MODIFIED" != "" ] && [ "$_MODIFIED" != "0" ]; then _STATS="$_STATS\e[1;33m✚$_MODIFIED\e[0m " # edit fi if [ "$_STAGED" != "" ] && [ "$_STAGED" != "0" ]; then _STATS="$_STATS\e[1;31m●$_STAGED\e[0m " # staged fi if [ "$_CONFLICT" != "" ] && [ "$_CONFLICT" != "0" ]; then _STATS="$_STATS\e[4;41m!$_CONFLICT\e[0m " # conflict fi if [ "$_DRC" != "" ] && [ "$_DRC" != "0" ]; then _STATS="$_STATS\e[1;31m✖⤽$_DRC\e[0m " # rm mv cp fi if [ "$_UNTRACKED" != "" ] && [ "$_UNTRACKED" != "0" ]; then _STATS="$_STATS\e[1;34m…$_UNTRACKED\e[0m " # untraged fi if [ "$_IGNORED" != "" ] && [ "$_IGNORED" != "0" ]; then _STATS="$_STATS\e[1;35m-$_IGNORED\e[0m " # ignored fi if [ "$_NEPOZNAM" != "" ] && [ "$_NEPOZNAM" != "0" ]; then _STATS="$_STATS\e[5;31m\U26A0 $_NEPOZNAM >git status\e[0m " # nepoznam fi if [ ! -z "$_STATS" ]; then echo -en "\e[0m$_STATS \e[0m" # print local status else echo -en "\e[1;32m\U221A\U1F5A5\e[0m" # ok local status fi fi } # Black 30 40 # Red 31 41 # Green 32 42 # Yellow 33 43 # Blue 34 44 # Purple 35 45 # Cyan 36 46 # Light Gray 37 47 # ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[red]%}%{●%G%}" # ZSH_THEME_GIT_PROMPT_CONFLICTS="%{$fg[red]%}%{✖%G%}" # ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}" # ZSH_THEME_GIT_PROMPT_BEHIND="%{↓%G%}" # ZSH_THEME_GIT_PROMPT_AHEAD="%{↑%G%}" # ZSH_THEME_GIT_PROMPT_UNTRACKED="%{…%G%}" # ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}%{✔%G%}" # \U221A 🖥 \U21D3 \U21D1 \UE0A0