94 lines
2.2 KiB
Plaintext
94 lines
2.2 KiB
Plaintext
|
||
parse_git_branch() {
|
||
|
||
if ! [ -x "$(which git)" ]; then
|
||
return
|
||
fi
|
||
|
||
local branch status
|
||
|
||
# current branch
|
||
branch="$(git branch --show-current 2> /dev/null)"
|
||
|
||
# current status
|
||
# M = modified
|
||
# A = added
|
||
# D = deleted
|
||
# R = renamed
|
||
# C = copied
|
||
# U = updated but unmerged
|
||
|
||
status="$(git status -s 2>/dev/null | cut -c 1 | sort -u | tr -d " \n?")"
|
||
|
||
if [ -n "$status" ]; then
|
||
status="-[$status]"
|
||
fi
|
||
|
||
if [[ -n "$branch" ]]; then
|
||
echo "($branch)$status"
|
||
fi
|
||
}
|
||
|
||
|
||
virtualenv_info() {
|
||
|
||
# Get Virtual Env
|
||
if [[ -n "$VIRTUAL_ENV" ]]; then
|
||
# Strip out the path and just leave the env name
|
||
echo "($(basename "$VIRTUAL_ENV"))"
|
||
fi
|
||
}
|
||
|
||
rightprompt()
|
||
{
|
||
if [[ $1 -ne 0 ]]; then
|
||
printf "%*s" $COLUMNS "$1 ⨯"
|
||
fi
|
||
}
|
||
|
||
|
||
export PROMPT_COMMAND=__prompt_command
|
||
|
||
__prompt_command() {
|
||
|
||
local EXIT=${PIPESTATUS[-1]}
|
||
|
||
close_color='\[\e[m\]'
|
||
red_color='\[\033[1;31m\]'
|
||
|
||
prompt_color='\[\033[;32m\]'
|
||
info_color='\[\033[1;34m\]'
|
||
prompt_symbol='㉿'
|
||
end_symbol='$'
|
||
|
||
|
||
if [ "$EUID" -eq 0 ]; then # Change prompt colors and symbols for root user
|
||
prompt_color='\[\033[;94m\]'
|
||
info_color='\[\033[1;31m\]'
|
||
end_symbol='#'
|
||
fi
|
||
|
||
|
||
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
|
||
prompt_symbol='📡'
|
||
fi
|
||
|
||
|
||
export VIRTUAL_ENV_DISABLE_PROMPT=1
|
||
|
||
|
||
local VENV_ BRANCH_ TERMINAL_NAME
|
||
VENV_="\$(virtualenv_info)"
|
||
BRANCH_="\$(parse_git_branch)"
|
||
|
||
TERMINAL_NAME="$(basename "$0")"
|
||
TERMINAL_NAME="\[\e]2;${TERMINAL_NAME^^}\a\]"
|
||
|
||
if [ $EXIT != 0 ]; then
|
||
PS1="$TERMINAL_NAME\n$prompt_color┌─${VENV_}─($close_color$info_color\u$prompt_symbol\H$close_color$prompt_color)-[$close_color\w$prompt_color]$close_color $red_color${BRANCH_}$close_color\n\[$(tput sc; rightprompt $EXIT; tput rc)\]$prompt_color└─$close_color$info_color$end_symbol$close_color "
|
||
else
|
||
PS1="$TERMINAL_NAME\n$prompt_color┌─${VENV_}─($close_color$info_color\u$prompt_symbol\H$close_color$prompt_color)-[$close_color\w$prompt_color]$close_color $red_color${BRANCH_}$close_color\n$prompt_color└─$close_color$info_color$end_symbol$close_color "
|
||
fi
|
||
|
||
PS2="> "
|
||
} |