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 dunnopull/1954/head
parent
3a778072db
commit
d63bfb5934
|
|
@ -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} "
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue