diff --git a/dotlib/prompt.sh b/dotlib/prompt.sh index d8e76c9..8aae263 100644 --- a/dotlib/prompt.sh +++ b/dotlib/prompt.sh @@ -1,3 +1,30 @@ +setup-prompt() { + local last_res=$? color=$PS1_color_green + PS1="\w " + + if [[ -d .git ]]; then + PS1+="$(command git branch --show-current) " + fi + + if [[ -v SSH_CLIENT ]]; then + PS1+="$PS1_hostname " + fi + + if (( last_res )); then + color=$PS1_color_red + fi + + + PS1+="\[$color\][$last_res]\[$PS1_color_reset\] $PS1_prompt_sym " +} + +PS1_prompt_sym=λ +PS1_hostname=${HOSTNAME-"$(hostname)"} +PS1_color_red=$(tput setaf 1) +PS1_color_green=$(tput setaf 2) +PS1_color_reset=$(tput sgr0) +PROMPT_COMMAND+=(setup-prompt) + read -r month day < <(date "+%m %d") if (( 10#$month == 3 && 10#$day < 18 )); then @@ -7,7 +34,7 @@ if (( 10#$month == 3 && 10#$day < 18 )); then printf "Only %d days left until Saint Patrick's day!\n" "$(( 17 - 10#$day ))" fi - prompt_sym=🍀 + PS1_prompt_sym=🍀 elif (( 10#$month == 10 )); then if (( 31 - 10#$day == 0 )); then printf 'Have a spooky halloween!\n' @@ -15,7 +42,7 @@ elif (( 10#$month == 10 )); then printf 'Only %d days left until Halloween!\n' "$(( 31 - 10#$day ))" fi - prompt_sym=🎃 + PS1_prompt_sym=🎃 elif (( 10#$month == 12 && 10#$day < 26 )); then if (( 25 - 10#$day == 0 )); then printf 'Merry Christmas!\n' @@ -23,22 +50,5 @@ elif (( 10#$month == 12 && 10#$day < 26 )); then printf 'Only %d days left until Christmas!\n' "$(( 25 - 10#$day ))" fi - prompt_sym=🌲 + PS1_prompt_sym=🌲 fi - -setup-prompt() { - if [[ -d .git ]]; then - git_branch="$(command git branch --show-current) " - else - git_branch="" - fi -} - -PROMPT_COMMAND+=(setup-prompt) -PS1='\w $git_branch' - -if [[ -v SSH_CLIENT ]]; then - PS1+='${HOSTNAME-"$(hostname)"} ' -fi - -PS1+='${prompt_sym-λ} '