diff --git a/README.md b/README.md index 47f1d01..6eb8a82 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Informative git prompt for bash +# Informative git prompt for bash and fish This prompt is a port of the "Informative git prompt for zsh" which you can find [here](https://github.com/olivierverdier/zsh-git-prompt) diff --git a/gitprompt.fish b/gitprompt.fish new file mode 100644 index 0000000..7bcfe54 --- /dev/null +++ b/gitprompt.fish @@ -0,0 +1,106 @@ +if not set -q __GIT_PROMPT_DIR + set __GIT_PROMPT_DIR ~/.bash +end + +# Colors +# Reset +set ResetColor (set_color normal) # Text Reset + +# Regular Colors +set Red (set_color red) # Red +set Yellow (set_color yellow); # Yellow +set Blue (set_color blue) # Blue +set WHITE (set_color white) + +# Bold +set BGreen (set_color -o green) # Green + +# High Intensty +set IBlack (set_color -o black) # Black + +# Bold High Intensty +set Magenta (set_color -o purple) # Purple + +# Default values for the appearance of the prompt. Configure at will. +set GIT_PROMPT_PREFIX "[" +set GIT_PROMPT_SUFFIX "]" +set GIT_PROMPT_SEPARATOR "|" +set GIT_PROMPT_BRANCH "$Magenta" +set GIT_PROMPT_STAGED "$Red● " +set GIT_PROMPT_CONFLICTS "$Red✖ " +set GIT_PROMPT_CHANGED "$Blue✚ " +set GIT_PROMPT_REMOTE " " +set GIT_PROMPT_UNTRACKED "…" +set GIT_PROMPT_CLEAN "$BGreen✔" + +function fish_prompt + + # Various variables you might want for your PS1 prompt instead + set Time (date +%R) + set PathShort (pwd|sed "s=$HOME=~=") + + set PROMPT_START "$Yellow$PathShort$ResetColor" + set PROMPT_END " \n$WHITE$Time$ResetColor \$ " + + set -e __CURRENT_GIT_STATUS + set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" + + set _GIT_STATUS (python $gitstatus) + set __CURRENT_GIT_STATUS $_GIT_STATUS + + set __CURRENT_GIT_STATUS_PARAM_COUNT (count $__CURRENT_GIT_STATUS) + + if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT + set GIT_BRANCH $__CURRENT_GIT_STATUS[1] + set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" + if contains "." "$GIT_REMOTE" + set -e GIT_REMOTE + end + set GIT_STAGED $__CURRENT_GIT_STATUS[3] + set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] + set GIT_CHANGED $__CURRENT_GIT_STATUS[5] + set GIT_UNTRACKED $__CURRENT_GIT_STATUS[6] + set GIT_CLEAN $__CURRENT_GIT_STATUS[7] + end + + if test -n "$__CURRENT_GIT_STATUS" + set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" + + if set -q GIT_REMOTE + set STATUS "$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" + end + + set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" + + if [ $GIT_STAGED != "0" ] + set STATUS "$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" + end + + if [ $GIT_CONFLICTS != "0" ] + set STATUS "$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" + end + + if [ $GIT_CHANGED != "0" ] + set STATUS "$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" + end + + if [ "$GIT_UNTRACKED" != "0" ] + set STATUS "$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" + end + + if [ "$GIT_CLEAN" = "1" ] + set STATUS "$STATUS$GIT_PROMPT_CLEAN" + end + + set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" + + set PS1 "$PROMPT_START$STATUS$PROMPT_END" + else + set PS1 "$PROMPT_START$PROMPT_END" + end + + echo -e $PS1 + +end + + diff --git a/gitprompt.png b/gitprompt.png new file mode 100644 index 0000000..c3d5c05 Binary files /dev/null and b/gitprompt.png differ