Created
December 8, 2021 15:43
-
-
Save dams/65ea25ec1f6e04f59cbcb5496e53a3f1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RED="\[\033[0;31m\]" | |
YELLOW="\[\033[0;33m\]" | |
LIGHT_YELLOW="\[\033[1;33m\]" | |
GREEN="\[\033[0;32m\]" | |
BLUE="\[\033[0;34m\]" | |
LIGHT_RED="\[\033[1;31m\]" | |
LIGHT_GREEN="\[\033[1;32m\]" | |
WHITE="\[\033[0;37m\]" | |
LIGHT_WHITE="\[\033[1;37m\]" | |
LIGHT_GRAY="\[\033[0;37m\]" | |
COLOR_NONE="\[\e[0m\]" | |
function parse_git_branch { | |
git rev-parse --git-dir &> /dev/null | |
git_status="$(git status 2> /dev/null)" | |
branch_pattern="^#? ?On branch ([^${IFS}]*)" | |
remote_pattern="Your branch is (.*) of" | |
diverge_pattern="Your branch and (.*) have diverged" | |
untracked_pattern="Untracked files:" | |
new_file_pattern=" new file:" | |
modified_file_pattern=" modified:" | |
# if [[ ! ${git_status}} =~ "working tree clean" ]]; then | |
# state="${LIGHT_RED}⚡ " | |
# fi | |
# add an else if or two here if you want to get more specific | |
if [[ ${git_status} =~ ${remote_pattern} ]]; then | |
if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then | |
remote="${LIGHT_YELLOW}^ " | |
else | |
remote="${LIGHT_YELLOW}v " | |
fi | |
fi | |
if [[ ${git_status} =~ ${diverge_pattern} ]]; then | |
remote="${LIGHT_YELLOW}D " | |
fi | |
if [[ ${git_status} =~ ${untracked_pattern} ]]; then | |
state2="${LIGHT_WHITE}+" | |
fi | |
if [[ ${git_status} =~ ${new_file_pattern} ]]; then | |
state3="${LIGHT_YELLOW}+" | |
fi | |
if [[ ${git_status} =~ ${modified_file_pattern} ]]; then | |
state4="${LIGHT_YELLOW}M" | |
fi | |
if [[ ${git_status} =~ ${branch_pattern} ]]; then | |
branch=${BASH_REMATCH[1]} | |
echo " ${branch} ${remote}${state}${state2}${state3}${state4}" > /tmp/__git_status__$1 | |
else | |
echo > "/tmp/__git_status__$1" | |
fi | |
rmdir "/tmp/__git_status_lock__$1" | |
} | |
function get_git_prompt() { | |
if [ -e "/tmp/__git_status__$$" ]; then cat "/tmp/__git_status__$$" | sed -e "s/acceptance/acc./"; fi | |
} | |
function prompt_func() { | |
previous_return_value=$?; | |
# prompt="${TITLEBAR}$BLUE[$RED\w$GREEN$(__git_ps1)$YELLOW$(git_dirty_flag)$BLUE]$COLOR_NONE " | |
# prompt="${TITLEBAR}${BLUE}[${RED}\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE} " | |
# prompt="${TITLEBAR}${BLUE}${LIGHT_WHITE}\w${GREEN}$(parse_git_branch)${BLUE}${COLOR_NONE} " | |
# prompt="${TITLEBAR}${BLUE}${LIGHT_WHITE}\w${GREEN}$(get_git_prompt)${BLUE}${COLOR_NONE} " | |
prompt="${TITLEBAR}${BLUE}\w${GREEN}$(get_git_prompt)${BLUE}${COLOR_NONE} " | |
# git status but with a lock | |
if mkdir "/tmp/__git_status_lock__$$" 2>/dev/null; then | |
# echo "START GIT STATUS" | |
( parse_git_branch $$ & ) | |
fi | |
PS1="\D{%d/%m %H:%M} ${prompt}$ " | |
echo -ne "\033]0;$TAB_TITLE\007" | |
} | |
PROMPT_COMMAND=prompt_func | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment