#!/usr/bin/env bash # shellcheck disable=1117 disable=1004 disable=2034 disable=2154 # Customize BASH PS1 prompt to show current GIT repository and branch. # by Mike Stewart - http://MediaDoneRight.com # SETUP CONSTANTS # Bunch-o-predefined colors. Makes reading code easier than escape sequences. # I don't remember where I found this. o_O # Reset Color_Off="\[\033[0m\]" # Text Reset # Regular Colors Black="\[\033[0;30m\]" # Black Red="\[\033[0;31m\]" # Red Green="\[\033[0;32m\]" # Green Yellow="\[\033[0;33m\]" # Yellow Blue="\[\033[0;34m\]" # Blue Purple="\[\033[0;35m\]" # Purple Cyan="\[\033[0;36m\]" # Cyan White="\[\033[0;37m\]" # White # Bold BBlack="\[\033[1;30m\]" # Black BRed="\[\033[1;31m\]" # Red BGreen="\[\033[1;32m\]" # Green BYellow="\[\033[1;33m\]" # Yellow BBlue="\[\033[1;34m\]" # Blue BPurple="\[\033[1;35m\]" # Purple BCyan="\[\033[1;36m\]" # Cyan BWhite="\[\033[1;37m\]" # White # Underline UBlack="\[\033[4;30m\]" # Black URed="\[\033[4;31m\]" # Red UGreen="\[\033[4;32m\]" # Green UYellow="\[\033[4;33m\]" # Yellow UBlue="\[\033[4;34m\]" # Blue UPurple="\[\033[4;35m\]" # Purple UCyan="\[\033[4;36m\]" # Cyan UWhite="\[\033[4;37m\]" # White # Background On_Black="\[\033[40m\]" # Black On_Red="\[\033[41m\]" # Red On_Green="\[\033[42m\]" # Green On_Yellow="\[\033[43m\]" # Yellow On_Blue="\[\033[44m\]" # Blue On_Purple="\[\033[45m\]" # Purple On_Cyan="\[\033[46m\]" # Cyan On_White="\[\033[47m\]" # White # High Intensty IBlack="\[\033[0;90m\]" # Black IRed="\[\033[0;91m\]" # Red IGreen="\[\033[0;92m\]" # Green IYellow="\[\033[0;93m\]" # Yellow IBlue="\[\033[0;94m\]" # Blue IPurple="\[\033[0;95m\]" # Purple ICyan="\[\033[0;96m\]" # Cyan IWhite="\[\033[0;97m\]" # White # Bold High Intensty BIBlack="\[\033[1;90m\]" # Black BIRed="\[\033[1;91m\]" # Red BIGreen="\[\033[1;92m\]" # Green BIYellow="\[\033[1;93m\]" # Yellow BIBlue="\[\033[1;94m\]" # Blue BIPurple="\[\033[1;95m\]" # Purple BICyan="\[\033[1;96m\]" # Cyan BIWhite="\[\033[1;97m\]" # White # High Intensty backgrounds On_IBlack="\[\033[0;100m\]" # Black On_IRed="\[\033[0;101m\]" # Red On_IGreen="\[\033[0;102m\]" # Green On_IYellow="\[\033[0;103m\]" # Yellow On_IBlue="\[\033[0;104m\]" # Blue On_IPurple="\[\033[10;95m\]" # Purple On_ICyan="\[\033[0;106m\]" # Cyan On_IWhite="\[\033[0;107m\]" # White # Various variables you might want for your PS1 prompt instead Time12h="\T" Time12a="\@" PathShort="\w" PathFull="\W" NewLine="\n" Jobs="\j" # This PS1 snippet was adopted from code for MAC/BSD I saw from: http://allancraig.net/index.php?option=com_content&view=article&id=108:ps1-export-command-for-git&catid=45:general&Itemid=96 # I tweaked it to work on UBUNTU 11.04 & 11.10 plus made it mo' better export PS1='$(if [ $? != 0 ]; then \ echo "'$BIRed' (!!) '$Color_Off'"; \ fi)'$IBlack$Time12h$Color_Off' '$BYellow$PathShort/$Color_Off'\ $(git branch &>/dev/null;\ if [ $? -eq 0 ]; then \ echo "$(\ echo `git status` | grep "Changes" > /dev/null 2>&1 && echo "'$IRed'"$(__git_ps1 " {%s}")"'$Color_Off'"; \ echo `git status` | grep -v "Changes" | grep -E "to publish your local commits" > /dev/null 2>&1 && echo "'$IBlue'"$(__git_ps1 " [^%s^]")"'$Color_Off'"; \ echo `git status` | grep -v "Changes" | grep -E "to update your local branch" > /dev/null 2>&1 && echo "'$IBlue'"$(__git_ps1 " [v%sv]")"'$Color_Off'"; \ echo `git status` | grep -v "Changes" | grep -E -v "to publish|update your local branch" > /dev/null 2>&1 && echo "'$Green'"$(__git_ps1 " (%s)")"'$Color_Off'"; \ )" - $(echo "'$IBlack'"`git sha7`"'$Color_Off'"); \ fi)$(if [[ $IN_NIX_SHELL != "" ]]; then\ echo "\n'$IBlack'~>'$Color_Off' '$BIPurple''$IN_NIX_SHELL''$Purple' nix-shell'$Color_Off' ('$BIBlue'$name'$Color_Off')'$Color_Off'" ;\ fi)$(if [[ $GUIX_ENVIRONMENT != "" ]]; then\ echo "\n'$IBlack'~>'$Color_Off' '$Purple'guix environment'$Color_Off' ('$BIBlue'$GUIX_ENVIRONMENT'$Color_Off')'$Color_Off'" ;\ fi)$(echo "\n'$BIPurple'\$'$Color_Off' ";)' export end="\033[0m" export black="\033[0;30m" export blackb="\033[1;30m" export white="\033[0;37m" export whiteb="\033[1;37m" export red="\033[0;31m" export redb="\033[1;31m" export green="\033[0;32m" export greenb="\033[1;32m" export yellow="\033[0;33m" export yellowb="\033[1;33m" export blue="\033[0;34m" export blueb="\033[1;34m" export purple="\033[0;35m" export purpleb="\033[1;35m" export lightblue="\033[0;36m" export lightblueb="\033[1;36m" function black { echo -e "${black}${1}${end}" } export -f black function blackb { echo -e "${blackb}${1}${end}" } export -f blackb function white { echo -e "${white}${1}${end}" } export -f white function whiteb { echo -e "${whiteb}${1}${end}" } export -f whiteb function red { echo -e "${red}${1}${end}" } export -f red function redb { echo -e "${redb}${1}${end}" } export -f redb function green { echo -e "${green}${1}${end}" } export -f green function greenb { echo -e "${greenb}${1}${end}" } export -f greenb function yellow { echo -e "${yellow}${1}${end}" } export -f yellow function yellowb { echo -e "${yellowb}${1}${end}" } export -f yellowb function blue { echo -e "${blue}${1}${end}" } export -f blue function blueb { echo -e "${blueb}${1}${end}" } export -f blueb function purple { echo -e "${purple}${1}${end}" } export -f purple function purpleb { echo -e "${purpleb}${1}${end}" } export -f purpleb function lightblue { echo -e "${lightblue}${1}${end}" } export -f lightblue function lightblueb { echo -e "${lightblueb}${1}${end}" } export -f lightblueb function colors { black "black" blackb "blackb" white "white" whiteb "whiteb" red "red" redb "redb" green "green" greenb "greenb" yellow "yellow" yellowb "yellowb" blue "blue" blueb "blueb" purple "purple" purpleb "purpleb" lightblue "lightblue" lightblueb "lightblueb" }