if ! $(declare -F __git_ps1 >/dev/null); then # Try to source a file with __git_ps1 if [[ -e /usr/lib/git-core/git-sh-prompt ]]; then . /usr/lib/git-core/git-sh-prompt elif [[ -e /usr/share/git-core/contrib/completion/git-prompt.sh ]]; then . /usr/share/git-core/contrib/completion/git-prompt.sh elif [[ $(uname -s) == Darwin* ]] && [[ -f $(brew --prefix git)/etc/bash_completion.d/git-prompt.sh ]]; then . $(brew --prefix git)/etc/bash_completion.d/git-prompt.sh elif [[ -f $HOME/.git-prompt.sh ]]; then # wget -O ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh . $HOME/.git-prompt.sh fi # Still no __git_ps1? Fake it. if ! $(declare -F __git_ps1 >/dev/null); then # By icetan at https://stackoverflow.com/a/35513635/9181 # Ex. to test if in a git repo: "rtrav .git $PWD" rtrav() { [ -e "$2"/"$1" ] || { [ "$2" != / ] && rtrav "$1" $(dirname "$2"); } } __git_ps1() { if rtrav .git "$PWD"; then local fmt="${1:- (%s)}" local branch=$(git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/') if [ -n "$branch" ]; then printf -- "$fmt" "$branch" fi fi } fi fi GIT_PS1_SHOWUPSTREAM="auto" GIT_PS1_SHOWDIRTYSTATE="true" GIT_PS1_STATESEPARATOR="" # Trim everything before the dash, then trim everything after the colon. SHORT_DOCKER_VER=${DOCKER_VER#*-} SHORT_DOCKER_VER="🐳 \e[0;36m${SHORT_DOCKER_VER%:*}" # Experimenting with git branch in PS1. Turn off by setting to false. if true ; then export PROMPT_DIRTRIM=1 # I like 023 or 030 for the git branch color. See https://i.stack.imgur.com/UQVe5.png if [[ -n $SSH_CLIENT ]]; then export PS1='$(if [ $? -eq 0 ]; then echo -e "\[\e[32m\]\xe2\x9c\x93"; else echo -e "\[\e[31m\]\xe2\x9c\x97"; fi) \[\e[38;5;242m\]\h:\w$(__git_ps1 " \[\e[38;5;030m\]%s\[\e[38;5;242m\]")$\[\e[0m\] ' else export PS1='$(if [ $? -eq 0 ]; then echo -e "\[\e[32m\]\xe2\x9c\x93"; else echo -e "\[\e[31m\]\xe2\x9c\x97"; fi)$(if [ -n $DOCKER_VER ]; then echo -e " $SHORT_DOCKER_VER"; fi) \[\e[38;5;242m\]\w$(__git_ps1 " \[\e[38;5;030m\]%s\[\e[38;5;242m\]")$\[\e[0m\] ' fi else export PROMPT_DIRTRIM=4 if [[ -n $SSH_CLIENT ]]; then export PS1='$(if [ $? -eq 0 ]; then echo -e "\[\e[32m\]\xe2\x9c\x93"; else echo -e "\[\e[31m\]\xe2\x9c\x97"; fi) \[\e[38;5;242m\]\h:\w$\[\e[0m\] ' else export PS1='$(if [ $? -eq 0 ]; then echo -e "\[\e[32m\]\xe2\x9c\x93"; else echo -e "\[\e[31m\]\xe2\x9c\x97"; fi) \[\e[38;5;242m\]\w$\[\e[0m\] ' fi fi