theme/barbuk: fix SC2154, and clean up

Handle all unbound parameters, even colors!

Alsö, fix some local variables and variable assignments.

The unicode/emoji symbols don’t show up for me so that makes me think they won’t work, but it *looks* like the history has these characters in them so…I dunno
pull/1954/head
John D Pell 2021-10-19 12:54:26 -04:00
parent 3a778072db
commit d63bfb5934
1 changed files with 48 additions and 46 deletions

View File

@ -1,6 +1,5 @@
# shellcheck shell=bash # shellcheck shell=bash
# shellcheck disable=SC2034 # Expected behavior for themes. # shellcheck disable=SC2034 # Expected behavior for themes.
# shellcheck disable=SC2154 #TODO: fix these all.
# Theme custom glyphs # Theme custom glyphs
SCM_GIT_CHAR_GITLAB=${BARBUK_GITLAB_CHAR:=' '} SCM_GIT_CHAR_GITLAB=${BARBUK_GITLAB_CHAR:=' '}
@ -15,96 +14,99 @@ PYTHON_VENV_CHAR=${BARBUK_PYTHON_VENV_CHAR:=' '}
COMMAND_DURATION_ICON=${BARBUK_COMMAND_DURATION_ICON:-"$bold_blue"} COMMAND_DURATION_ICON=${BARBUK_COMMAND_DURATION_ICON:-"$bold_blue"}
# Command duration # Command duration
COMMAND_DURATION_MIN_SECONDS=${COMMAND_DURATION_MIN_SECONDS:-1} : "${COMMAND_DURATION_MIN_SECONDS:=1}"
COMMAND_DURATION_COLOR="$normal" : "${COMMAND_DURATION_COLOR:="${normal?}"}"
# Ssh user and hostname display # Ssh user and hostname display
SSH_INFO=${BARBUK_SSH_INFO:=true} SSH_INFO=${BARBUK_SSH_INFO:=true}
HOST_INFO=${BARBUK_HOST_INFO:=long} HOST_INFO=${BARBUK_HOST_INFO:=long}
# Bash-it default glyphs customization # Bash-it default glyphs overrides
SCM_NONE_CHAR= SCM_NONE_CHAR=
SCM_THEME_PROMPT_DIRTY=" ${bold_red}" SCM_THEME_PROMPT_DIRTY=" ${bold_red?}"
SCM_THEME_PROMPT_CLEAN=" ${bold_green}" SCM_THEME_PROMPT_CLEAN=" ${bold_green?}"
SCM_THEME_PROMPT_PREFIX="|" SCM_THEME_PROMPT_PREFIX="|"
SCM_THEME_PROMPT_SUFFIX="${green}| " SCM_THEME_PROMPT_SUFFIX="${green?}| "
SCM_GIT_BEHIND_CHAR="${bold_red}${normal}" SCM_GIT_BEHIND_CHAR="${bold_red?}${normal?}"
SCM_GIT_AHEAD_CHAR="${bold_green}${normal}" SCM_GIT_AHEAD_CHAR="${bold_green?}${normal?}"
SCM_GIT_UNTRACKED_CHAR="⌀" SCM_GIT_UNTRACKED_CHAR="⌀"
SCM_GIT_UNSTAGED_CHAR="${bold_yellow}${normal}" SCM_GIT_UNSTAGED_CHAR="${bold_yellow?}${normal?}"
SCM_GIT_STAGED_CHAR="${bold_green}+${normal}" SCM_GIT_STAGED_CHAR="${bold_green?}+${normal?}"
GIT_THEME_PROMPT_DIRTY=" ${bold_red}" GIT_THEME_PROMPT_DIRTY=" ${bold_red?}"
GIT_THEME_PROMPT_CLEAN=" ${bold_green}" GIT_THEME_PROMPT_CLEAN=" ${bold_green?}"
GIT_THEME_PROMPT_PREFIX="${cyan}" GIT_THEME_PROMPT_PREFIX="${cyan?}"
GIT_THEME_PROMPT_SUFFIX="${cyan}" GIT_THEME_PROMPT_SUFFIX="${cyan?}"
SCM_THEME_BRANCH_TRACK_PREFIX="${normal}${cyan}" SCM_THEME_BRANCH_TRACK_PREFIX="${normal?}${cyan?}"
SCM_THEME_CURRENT_USER_PREFFIX='  ' SCM_THEME_CURRENT_USER_PREFFIX='  '
SCM_GIT_SHOW_CURRENT_USER=false SCM_GIT_SHOW_CURRENT_USER='false'
function _git-uptream-remote-logo { function _git-uptream-remote-logo() {
[[ "$(_git-upstream)" == "" ]] && SCM_GIT_CHAR="$SCM_GIT_CHAR_DEFAULT" [[ -z "$(_git-upstream)" ]] && SCM_GIT_CHAR="${SCM_GIT_CHAR_DEFAULT:-}"
local remote remote_domain local remote remote_domain
remote=$(_git-upstream-remote) remote="$(_git-upstream-remote)"
remote_domain=$(git config --get remote."$remote".url | awk -F'[@:.]' '{print $2}') remote_domain="$(git config --get remote."${remote}".url | awk -F'[@:.]' '{print $2}')"
# remove // suffix for https:// url # remove // suffix for https:// url
remote_domain=${remote_domain//\//} remote_domain="${remote_domain//\//}"
case $remote_domain in case "${remote_domain}" in
github) SCM_GIT_CHAR="$SCM_GIT_CHAR_GITHUB" ;; github) SCM_GIT_CHAR="${SCM_GIT_CHAR_GITHUB:-}" ;;
gitlab) SCM_GIT_CHAR="$SCM_GIT_CHAR_GITLAB" ;; gitlab) SCM_GIT_CHAR="${SCM_GIT_CHAR_GITLAB:-}" ;;
bitbucket) SCM_GIT_CHAR="$SCM_GIT_CHAR_BITBUCKET" ;; bitbucket) SCM_GIT_CHAR="${SCM_GIT_CHAR_BITBUCKET:-}" ;;
*) SCM_GIT_CHAR="$SCM_GIT_CHAR_DEFAULT" ;; *) SCM_GIT_CHAR="${SCM_GIT_CHAR_DEFAULT:-}" ;;
esac esac
} }
function git_prompt_info { function git_prompt_info() {
git_prompt_vars git_prompt_vars
echo -e " on $SCM_GIT_CHAR_ICON_BRANCH $SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_GIT_AHEAD$SCM_GIT_BEHIND$SCM_GIT_STASH$SCM_SUFFIX" echo -e " on ${SCM_GIT_CHAR_ICON_BRANCH:-} ${SCM_PREFIX:-}${SCM_BRANCH:-}${SCM_STATE:-}${SCM_GIT_AHEAD:-}${SCM_GIT_BEHIND:-}${SCM_GIT_STASH:-}${SCM_SUFFIX:-}"
} }
function _exit-code { function _exit-code() {
if [[ "$1" -ne 0 ]]; then if [[ "${1:-}" -ne 0 ]]; then
exit_code=" ${purple}${EXIT_CODE_ICON}${yellow}${exit_code}${bold_orange}" exit_code=" ${purple?}${EXIT_CODE_ICON:-}${yellow?}${exit_code:-}${bold_orange?}"
else else
exit_code="${bold_green}" exit_code="${bold_green?}"
fi fi
} }
function _prompt { function _prompt() {
local exit_code="$?" wrap_char=' ' dir_color=$green ssh_info='' python_venv='' host command_duration= local exit_code="$?" wrap_char=' ' dir_color=$green ssh_info='' python_venv='' host command_duration=
local scm_char scm_prompt_info
command_duration=$(_command_duration) command_duration="$(_command_duration)"
_exit-code exit_code _exit-code exit_code
_git-uptream-remote-logo _git-uptream-remote-logo
history -a _save-and-reload-history 1
# Detect root shell # Detect root shell
if [ "$(whoami)" = root ]; then if [[ "${USER:-${LOGNAME:?}}" == root ]]; then
dir_color=$red dir_color="${red?}"
fi fi
# Detect ssh # Detect ssh
if [[ -n "${SSH_CONNECTION}" ]] && [ "$SSH_INFO" = true ]; then if [[ -n "${SSH_CONNECTION:-}" && "${SSH_INFO:-}" == true ]]; then
if [ "$HOST_INFO" = long ]; then if [[ "${HOST_INFO:-}" == long ]]; then
host="\H" host="\H"
else else
host="\h" host="\h"
fi fi
ssh_info="${bold_blue}\u${bold_orange}@${cyan}$host ${bold_orange}in" ssh_info="${bold_blue?}\u${bold_orange?}@${cyan?}$host ${bold_orange?}in"
fi fi
# Detect python venv # Detect python venv
if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then if [[ -n "${CONDA_DEFAULT_ENV:-}" ]]; then
python_venv="$PYTHON_VENV_CHAR${CONDA_DEFAULT_ENV} " python_venv="${PYTHON_VENV_CHAR:-}${CONDA_DEFAULT_ENV:-} "
elif [[ -n "${VIRTUAL_ENV}" ]]; then elif [[ -n "${VIRTUAL_ENV:-}" ]]; then
python_venv="$PYTHON_VENV_CHAR$(basename "${VIRTUAL_ENV}") " python_venv="$PYTHON_VENV_CHAR${VIRTUAL_ENV##*/} "
fi fi
PS1="\\n${ssh_info} ${purple}$(scm_char)${python_venv}${dir_color}\\w${normal}$(scm_prompt_info)${command_duration}${exit_code}" scm_char="$(scm_char)"
scm_prompt_info="$(scm_prompt_info)"
PS1="\\n${ssh_info} ${purple}${scm_char}${python_venv}${dir_color}\\w${normal}${scm_prompt_info}${command_duration}${exit_code}"
[[ ${#PS1} -gt $((COLUMNS * 2)) ]] && wrap_char="\\n" [[ ${#PS1} -gt $((COLUMNS * 2)) ]] && wrap_char="\\n"
PS1="${PS1}${wrap_char}${normal} " PS1="${PS1}${wrap_char}${normal} "
} }