Make the prompt generator more dynamic

This commit is contained in:
Nick Chambers 2022-10-21 16:33:38 -05:00
parent 42be2b7935
commit 3bc9a5c66d
1 changed files with 30 additions and 20 deletions

View File

@ -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-λ} '