You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.8 KiB
92 lines
3.8 KiB
#!/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
|
|
|