cmder/vendor/git-prompt.sh

86 lines
2.4 KiB
Bash
Raw Normal View History

function getGitStatusSetting() {
2022-10-15 17:16:13 +08:00
gitStatusSetting=$(git --no-pager config -l 2>/dev/null)
2019-11-24 00:54:53 +08:00
if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]]
then
echo false
else
echo true
fi
}
function getSimpleGitBranch() {
gitDir=$(git rev-parse --git-dir 2>/dev/null)
if [ -z "$gitDir" ]; then
2022-10-15 17:08:25 +08:00
return 0
fi
2022-10-15 17:16:13 +08:00
headContent=$(< "$gitDir/HEAD")
if [[ "$headContent" == "ref: refs/heads/"* ]]
then
2022-10-15 17:08:25 +08:00
echo " (${headContent:16})"
else
2022-10-15 17:08:25 +08:00
echo " (HEAD detached at ${headContent:0:7})"
2022-10-15 17:16:13 +08:00
fi
}
2017-07-11 11:21:22 +08:00
if test -f /etc/profile.d/git-sdk.sh
then
2017-07-11 11:23:51 +08:00
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
2017-07-11 11:21:22 +08:00
else
2017-07-11 11:23:51 +08:00
TITLEPREFIX=$MSYSTEM
fi
2017-07-11 11:21:22 +08:00
if test -f ~/.config/git/git-prompt.sh
then
if [[ $(getGitStatusSetting) == true ]]
then
. ~/.config/git/git-prompt.sh
fi
2017-07-11 11:21:22 +08:00
else
PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
2017-07-11 11:23:51 +08:00
# PS1="$PS1"'\n' # new line
2017-07-11 11:21:22 +08:00
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host<space>
2017-07-11 11:23:51 +08:00
# PS1="$PS1"'\[\033[35m\]' # change to purple
# PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
2017-07-11 11:21:22 +08:00
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
2017-07-11 11:23:51 +08:00
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
if [[ $(getGitStatusSetting) == true ]]
then
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
else
PS1="$PS1"'\[\033[37;1m\]' # change color to white
PS1="$PS1"'`getSimpleGitBranch`'
fi
2017-07-11 11:23:51 +08:00
fi
2017-07-11 11:21:22 +08:00
fi
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
2022-10-15 17:16:13 +08:00
PS1="$PS1"'λ ' # prompt: always λ
2017-07-11 11:21:22 +08:00
fi
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
# Evaluate all user-specific Bash completion scripts (if any)
if test -z "$WINELOADERNOEXEC"
then
for c in "$HOME"/bash_completion.d/*.bash
do
# Handle absence of any scripts (or the folder) gracefully
test ! -f "$c" ||
. "$c"
done
fi