| @@ -0,0 +1,74 @@ | |||
| _show_last_exit_smilie() { | |||
| # If the exit status of the last run command was a 0 (success), show a smile, otherwise a frown | |||
| exit_status=$? | |||
| if [[ "$exit_status" -ne 0 ]]; then | |||
| echo "${NORMAL}[${RED}:(${NORMAL}]" | |||
| else | |||
| echo "${NORMAL}[${GREEN}:)${NORMAL}]" | |||
| fi | |||
| } | |||
| # This function was modified from one found @ https://www.reddit.com/r/linux/comments/2uf5uu/this_is_my_bash_prompt_which_is_your_favorite/?st=jikgswh4&sh=371ba8bf | |||
| _git_status() { | |||
| local unknown untracked stash clean ahead behind staged dirty diverged | |||
| unknown=$BLUE | |||
| untracked=$GREEN | |||
| stash=$GREEN | |||
| clean=$GREEN | |||
| ahead=$YELLOW | |||
| behind=$YELLOW | |||
| staged=$CYAN | |||
| dirty=$RED | |||
| diverged=$RED | |||
| branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) | |||
| if [[ -n "$branch" ]]; then | |||
| git_status=$(git status 2> /dev/null) | |||
| # If nothing changes the color, we can spot unhandled cases. | |||
| color=$unknown | |||
| if [[ $git_status =~ 'Untracked files' ]]; then | |||
| color=$untracked | |||
| branch="${branch}?" | |||
| fi | |||
| if git stash show &>/dev/null; then | |||
| color=$stash | |||
| branch="${branch}+" | |||
| fi | |||
| if [[ $git_status =~ 'working directory clean' ]]; then | |||
| color=$clean | |||
| fi | |||
| if [[ $git_status =~ 'Your branch is ahead' ]]; then | |||
| color=$ahead | |||
| branch="${branch}>" | |||
| fi | |||
| if [[ $git_status =~ 'Your branch is behind' ]]; then | |||
| color=$behind | |||
| branch="${branch}<" | |||
| fi | |||
| if [[ $git_status =~ 'Changes to be committed' ]]; then | |||
| color=$staged | |||
| fi | |||
| if [[ $git_status =~ 'Changed but not updated' || | |||
| $git_status =~ 'Changes not staged' || | |||
| $git_status =~ 'Unmerged paths' ]]; then | |||
| color=$dirty | |||
| fi | |||
| if [[ $git_status =~ 'Your branch'.+diverged ]]; then | |||
| color=$diverged | |||
| branch="${branch}!" | |||
| fi | |||
| echo -n "${NORMAL}|${color}${branch}${NORMAL}|" | |||
| fi | |||
| } | |||
| set_prompt() { | |||
| if [ $1 = yes ]; then | |||
| echo -n "${debian_chroot:+($debian_chroot)}${GREEN}\u${NORMAL}[${BLUE}\w${NORMAL}]$(_show_last_exit_smilie)$(_git_status)\$ " | |||
| else | |||
| echo -n "${debian_chroot:+($debian_chroot)}\u@\h:\w\$ " | |||
| fi | |||
| } | |||