diff --git a/themes/90210/90210.theme.bash b/themes/90210/90210.theme.bash index 3db3f17b..6b94427a 100644 --- a/themes/90210/90210.theme.bash +++ b/themes/90210/90210.theme.bash @@ -1,20 +1,21 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. -SCM_THEME_PROMPT_DIRTY=" ${red}✗" -SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓" +SCM_THEME_PROMPT_DIRTY=" ${red?}✗" +SCM_THEME_PROMPT_CLEAN=" ${bold_green?}✓" SCM_THEME_PROMPT_PREFIX=" |" -SCM_THEME_PROMPT_SUFFIX="${green}|" +SCM_THEME_PROMPT_SUFFIX="${green?}|" -GIT_THEME_PROMPT_DIRTY=" ${red}✗" -GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓" -GIT_THEME_PROMPT_PREFIX=" ${green}|" -GIT_THEME_PROMPT_SUFFIX="${green}|" +GIT_THEME_PROMPT_DIRTY=" ${red?}✗" +GIT_THEME_PROMPT_CLEAN=" ${bold_green?}✓" +GIT_THEME_PROMPT_PREFIX=" ${green?}|" +GIT_THEME_PROMPT_SUFFIX="${green?}|" # Nicely formatted terminal prompt function prompt_command() { - PS1="\n${bold_black}[${blue}\@${bold_black}]-${bold_black}[${green}\u${yellow}@${green}\h${bold_black}]-${bold_black}[${purple}\w${bold_black}]-$(scm_prompt_info)\n${reset_color}\$ " + local scm_prompt_info + scm_prompt_info="$(scm_prompt_info)" + PS1="\n${bold_black?}[${blue?}\@${bold_black?}]-${bold_black?}[${green?}\u${yellow?}@${green?}\h${bold_black?}]-${bold_black?}[${purple?}\w${bold_black?}]-${scm_prompt_info?}\n${reset_color?}\$ " } safe_append_prompt_command prompt_command diff --git a/themes/bakke/bakke.theme.bash b/themes/bakke/bakke.theme.bash index d7bfbbe8..a3670b07 100644 --- a/themes/bakke/bakke.theme.bash +++ b/themes/bakke/bakke.theme.bash @@ -1,16 +1,15 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. -SCM_THEME_PROMPT_DIRTY=" ${red}✗" -SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓" +SCM_THEME_PROMPT_DIRTY=" ${red?}✗" +SCM_THEME_PROMPT_CLEAN=" ${bold_green?}✓" SCM_THEME_PROMPT_PREFIX=" |" -SCM_THEME_PROMPT_SUFFIX="${green}|" +SCM_THEME_PROMPT_SUFFIX="${green?}|" -GIT_THEME_PROMPT_DIRTY=" ${red}✗" -GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓" -GIT_THEME_PROMPT_PREFIX=" ${green}|" -GIT_THEME_PROMPT_SUFFIX="${green}|" +GIT_THEME_PROMPT_DIRTY=" ${red?}✗" +GIT_THEME_PROMPT_CLEAN=" ${bold_green?}✓" +GIT_THEME_PROMPT_PREFIX=" ${green?}|" +GIT_THEME_PROMPT_SUFFIX="${green?}|" RVM_THEME_PROMPT_PREFIX="|" RVM_THEME_PROMPT_SUFFIX="|" @@ -19,7 +18,10 @@ function prompt_command() { #PS1="${bold_cyan}$(scm_char)${green}$(scm_prompt_info)${purple}$(ruby_version_prompt) ${yellow}\h ${reset_color}in ${green}\w ${reset_color}\n${green}→${reset_color} " #PS1="\n${purple}\h: ${reset_color} ${green}\w\n${bold_cyan}$(scm_char)${green}$(scm_prompt_info) ${green}→${reset_color} " #PS1="\n${cyan}\h: ${reset_color} ${yellow}\w\n${red}$(scm_char)${red}$(scm_prompt_info) ${green}→${reset_color} " - PS1="\n${cyan}\h:$(virtualenv_prompt) ${reset_color} ${yellow}\w ${green}$(scm_prompt_info)\n${reset_color}→ " + local virtualenv_prompt scm_prompt_info + virtualenv_prompt="$(virtualenv_prompt)" + scm_prompt_info="$(scm_prompt_info)" + PS1="\n${cyan?}\h:${virtualenv_prompt} ${reset_color?} ${yellow?}\w ${green?}${scm_prompt_info}\n${reset_color?}→ " } safe_append_prompt_command prompt_command diff --git a/themes/bira/bira.theme.bash b/themes/bira/bira.theme.bash index 7db03000..f30d8d5d 100644 --- a/themes/bira/bira.theme.bash +++ b/themes/bira/bira.theme.bash @@ -1,24 +1,26 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. -SCM_THEME_PROMPT_PREFIX=" ${yellow}‹" -SCM_THEME_PROMPT_SUFFIX="›${reset_color}" +SCM_THEME_PROMPT_PREFIX=" ${yellow?}‹" +SCM_THEME_PROMPT_SUFFIX="›${reset_color?}" -VIRTUALENV_THEME_PROMPT_PREFIX=" ${cyan}‹" -VIRTUALENV_THEME_PROMPT_SUFFIX="›${reset_color}" +VIRTUALENV_THEME_PROMPT_PREFIX=" ${cyan?}‹" +VIRTUALENV_THEME_PROMPT_SUFFIX="›${reset_color?}" bold="\[\e[1m\]" -if [ ${UID} -eq 0 ]; then - user_host="${bold_red}\u@\h${normal}${reset_color}" +if [[ ${UID} -eq 0 ]]; then + user_host="${bold_red?}\u@\h${normal?}${reset_color?}" else - user_host="${bold_green}\u@\h${normal}${reset_color}" + user_host="${bold_green?}\u@\h${normal?}${reset_color?}" fi function prompt_command() { - local current_dir=" ${bold_blue}\w${normal}${reset_color}" - PS1="╭─${user_host}${current_dir}$(virtualenv_prompt)$(scm_prompt_info)\n╰─${bold}\\$ ${normal}" + local current_dir=" ${bold_blue?}\w${normal?}${reset_color?}" + local virtualenv_prompt scm_prompt_info + virtualenv_prompt="$(virtualenv_prompt)" + scm_prompt_info="$(scm_prompt_info)" + PS1="╭─${user_host?}${current_dir}${virtualenv_prompt}${scm_prompt_info}\n╰─${bold?}\\$ ${normal?}" } safe_append_prompt_command prompt_command diff --git a/themes/codeword/codeword.theme.bash b/themes/codeword/codeword.theme.bash index beab6a4a..d52403c1 100644 --- a/themes/codeword/codeword.theme.bash +++ b/themes/codeword/codeword.theme.bash @@ -1,23 +1,23 @@ # shellcheck shell=bash -SCM_THEME_PROMPT_PREFIX=${SCM_THEME_PROMPT_SUFFIX} -SCM_THEME_PROMPT_DIRTY="${bold_red} ✗${normal}" -SCM_THEME_PROMPT_CLEAN="${bold_green} ✓${normal}" -SCM_GIT_CHAR="${green}±${normal}" +SCM_THEME_PROMPT_PREFIX="${SCM_THEME_PROMPT_SUFFIX:-}" +SCM_THEME_PROMPT_DIRTY="${bold_red?} ✗${normal?}" +SCM_THEME_PROMPT_CLEAN="${bold_green?} ✓${normal?}" +SCM_GIT_CHAR="${green?}±${normal?}" -mark_prompt() { - echo "${green}\$${normal}" +function mark_prompt() { + echo "${green?}\$${normal?}" } -user_host_path_prompt() { - ps_user="${green}\u${normal}"; - ps_host="${blue}\H${normal}"; - ps_path="${yellow}\w${normal}"; - echo "$ps_user@$ps_host:$ps_path" +function user_host_path_prompt() { + ps_user="${green?}\u${normal?}"; + ps_host="${blue?}\H${normal?}"; + ps_path="${yellow?}\w${normal?}"; + echo "${ps_user?}@${ps_host?}:${ps_path?}" } -prompt() { - SCM_PROMPT_FORMAT=' [%s%s]' +function prompt() { + local SCM_PROMPT_FORMAT=' [%s%s]' PS1="$(user_host_path_prompt)$(virtualenv_prompt)$(scm_prompt) $(mark_prompt) " } diff --git a/themes/powerline/powerline.base.bash b/themes/powerline/powerline.base.bash index 7da15cfd..7067dfb8 100644 --- a/themes/powerline/powerline.base.bash +++ b/themes/powerline/powerline.base.bash @@ -1,16 +1,15 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. # Define this here so it can be used by all of the Powerline themes THEME_CHECK_SUDO=${THEME_CHECK_SUDO:=true} function set_color() { - set +u - if [[ "${1}" != "-" ]]; then + local fg='' bg='' + if [[ "${1:-}" != "-" ]]; then fg="38;5;${1}" fi - if [[ "${2}" != "-" ]]; then + if [[ "${2:-}" != "-" ]]; then bg="48;5;${2}" [[ -n "${fg}" ]] && bg=";${bg}" fi @@ -99,14 +98,13 @@ function __powerline_k8s_namespace_prompt() { } function __powerline_python_venv_prompt() { - set +u local python_venv="" - if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then + if [[ -n "${CONDA_DEFAULT_ENV:-}" ]]; then python_venv="${CONDA_DEFAULT_ENV}" PYTHON_VENV_CHAR=${CONDA_PYTHON_VENV_CHAR} - elif [[ -n "${VIRTUAL_ENV}" ]]; then - python_venv=$(basename "${VIRTUAL_ENV}") + elif [[ -n "${VIRTUAL_ENV:-}" ]]; then + python_venv="${VIRTUAL_ENV##*/}" fi [[ -n "${python_venv}" ]] && echo "${PYTHON_VENV_CHAR}${python_venv}|${PYTHON_VENV_THEME_PROMPT_COLOR}" @@ -137,7 +135,7 @@ function __powerline_scm_prompt() { elif [[ "${SCM_SVN_CHAR}" == "${SCM_CHAR}" ]]; then scm_prompt+="${SCM_CHAR}${SCM_BRANCH}${SCM_STATE}" fi - echo "$(eval "echo ${scm_prompt}")${scm}|${color}" + echo "${scm_prompt?}${scm?}|${color}" fi } @@ -243,12 +241,12 @@ function __powerline_left_segment() { # Since the previous segment wasn't the last segment, add padding, if needed # if [[ "${POWERLINE_COMPACT_BEFORE_SEPARATOR}" -eq 0 ]]; then - LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}") ${normal}" + LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}") ${normal?}" fi if [[ "${LAST_SEGMENT_COLOR}" -eq "${params[1]}" ]]; then - LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}")${POWERLINE_LEFT_SEPARATOR_SOFT}${normal}" + LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}")${POWERLINE_LEFT_SEPARATOR_SOFT}${normal?}" else - LEFT_PROMPT+="$(set_color "${LAST_SEGMENT_COLOR}" "${params[1]}")${POWERLINE_LEFT_SEPARATOR}${normal}" + LEFT_PROMPT+="$(set_color "${LAST_SEGMENT_COLOR}" "${params[1]}")${POWERLINE_LEFT_SEPARATOR}${normal?}" fi fi @@ -258,7 +256,7 @@ function __powerline_left_segment() { } function __powerline_left_last_segment_padding() { - LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}") ${normal}" + LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}") ${normal?}" } function __powerline_last_status_prompt() { @@ -285,9 +283,9 @@ function __powerline_prompt_command() { [[ -n "${info}" ]] && __powerline_left_segment "${info}" done - [[ "${last_status}" -ne 0 ]] && __powerline_left_segment "$(__powerline_last_status_prompt ${last_status})" + [[ "${last_status}" -ne 0 ]] && __powerline_left_segment "$(__powerline_last_status_prompt "${last_status}")" - if [[ -n "${LEFT_PROMPT}" ]] && [[ "${POWERLINE_COMPACT_AFTER_LAST_SEGMENT}" -eq 0 ]]; then + if [[ -n "${LEFT_PROMPT}" ]] && [[ "${POWERLINE_COMPACT_AFTER_LAST_SEGMENT:-}" -eq 0 ]]; then __powerline_left_last_segment_padding fi @@ -296,11 +294,11 @@ function __powerline_prompt_command() { prompt_color="$(set_color "${LAST_SEGMENT_COLOR}" -)" if [[ -n "${LEFT_PROMPT}" ]] && [[ -n "${POWERLINE_LEFT_LAST_SEGMENT_PROMPT_CHAR}" ]]; then LEFT_PROMPT+="$(set_color - "${LAST_SEGMENT_COLOR}")${POWERLINE_LEFT_LAST_SEGMENT_PROMPT_CHAR}" - prompt_color="${normal}" + prompt_color="${normal?}" fi - [[ -n "${LEFT_PROMPT}" ]] && LEFT_PROMPT+="${prompt_color}${separator_char}${normal}" + [[ -n "${LEFT_PROMPT}" ]] && LEFT_PROMPT+="${prompt_color}${separator_char}${normal?}" - if [[ "${POWERLINE_COMPACT_PROMPT}" -eq 0 ]]; then + if [[ "${POWERLINE_COMPACT_PROMPT:-}" -eq 0 ]]; then LEFT_PROMPT+=" " fi diff --git a/themes/pure/pure.theme.bash b/themes/pure/pure.theme.bash index 99476f4a..ba83a232 100644 --- a/themes/pure/pure.theme.bash +++ b/themes/pure/pure.theme.bash @@ -1,16 +1,15 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. # scm theming SCM_THEME_PROMPT_PREFIX="|" SCM_THEME_PROMPT_SUFFIX="" -SCM_THEME_PROMPT_DIRTY=" ${bold_red}✗${normal}" -SCM_THEME_PROMPT_CLEAN=" ${green}✓${normal}" -SCM_GIT_CHAR="${green}±${normal}" -SCM_SVN_CHAR="${bold_cyan}⑆${normal}" -SCM_HG_CHAR="${bold_red}☿${normal}" +SCM_THEME_PROMPT_DIRTY=" ${bold_red?}✗${normal?}" +SCM_THEME_PROMPT_CLEAN=" ${green?}✓${normal?}" +SCM_GIT_CHAR="${green?}±${normal?}" +SCM_SVN_CHAR="${bold_cyan?}⑆${normal?}" +SCM_HG_CHAR="${bold_red?}☿${normal?}" VIRTUALENV_THEME_PROMPT_PREFIX="(" VIRTUALENV_THEME_PROMPT_SUFFIX=")" @@ -20,20 +19,23 @@ VIRTUALENV_THEME_PROMPT_SUFFIX=")" # export LSCOLORS="Gxfxcxdxbxegedabagacad" # export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:' -pure_prompt() { - ps_host="${bold_blue}\h${normal}" - ps_user="${green}\u${normal}" - ps_user_mark="${green} $ ${normal}" - ps_root="${red}\u${red}" - ps_root_mark="${red} # ${normal}" - ps_path="${yellow}\w${normal}" +function pure_prompt() { + local ps_host="${bold_blue?}\h${normal?}" + local ps_user="${green?}\u${normal?}" + local ps_user_mark="${green?} $ ${normal?}" + local ps_root="${red?}\u${red?}" + local ps_root_mark="${red?} # ${normal?}" + local ps_path="${yellow?}\w${normal?}" + local virtualenv_prompt scm_prompt + virtualenv_prompt="$(virtualenv_prompt)" + scm_prompt="$(scm_prompt)" # make it work - case $(id -u) in + case "${EUID:-$UID}" in 0) - PS1="$(virtualenv_prompt)$ps_root@$ps_host$(scm_prompt):$ps_path$ps_root_mark" + PS1="${virtualenv_prompt}${ps_root}@${ps_host}${scm_prompt}:${ps_path}${ps_root_mark}" ;; *) - PS1="$(virtualenv_prompt)$ps_user@$ps_host$(scm_prompt):$ps_path$ps_user_mark" + PS1="${virtualenv_prompt}${ps_user}@${ps_host}${scm_prompt}:${ps_path}${ps_user_mark}" ;; esac } diff --git a/themes/purity/purity.theme.bash b/themes/purity/purity.theme.bash index 22a3fbfb..0fc6c4cf 100644 --- a/themes/purity/purity.theme.bash +++ b/themes/purity/purity.theme.bash @@ -1,36 +1,44 @@ # shellcheck shell=bash # shellcheck disable=SC2034 # Expected behavior for themes. -# shellcheck disable=SC2154 #TODO: fix these all. -SCM_THEME_PROMPT_DIRTY=" ${bold_red}⊘${normal}" -SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓${normal}" -SCM_THEME_PROMPT_PREFIX="${reset_color}( " -SCM_THEME_PROMPT_SUFFIX=" ${reset_color})" +SCM_THEME_PROMPT_DIRTY=" ${bold_red?}⊘${normal?}" +SCM_THEME_PROMPT_CLEAN=" ${bold_green?}✓${normal?}" +SCM_THEME_PROMPT_PREFIX="${reset_color?}( " +SCM_THEME_PROMPT_SUFFIX=" ${reset_color?})" -GIT_THEME_PROMPT_DIRTY=" ${bold_red}⊘${normal}" -GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓${normal}" -GIT_THEME_PROMPT_PREFIX="${reset_color}( " -GIT_THEME_PROMPT_SUFFIX=" ${reset_color})" +GIT_THEME_PROMPT_DIRTY=" ${bold_red?}⊘${normal?}" +GIT_THEME_PROMPT_CLEAN=" ${bold_green?}✓${normal?}" +GIT_THEME_PROMPT_PREFIX="${reset_color?}( " +GIT_THEME_PROMPT_SUFFIX=" ${reset_color?})" -STATUS_THEME_PROMPT_BAD="${bold_red}❯${reset_color}${normal} " -STATUS_THEME_PROMPT_OK="${bold_green}❯${reset_color}${normal} " -PURITY_THEME_PROMPT_COLOR="${PURITY_THEME_PROMPT_COLOR:=$blue}" +STATUS_THEME_PROMPT_BAD="${bold_red?}❯${reset_color?}${normal?} " +STATUS_THEME_PROMPT_OK="${bold_green?}❯${reset_color?}${normal?} " +: "${PURITY_THEME_PROMPT_COLOR:=$blue}" -venv_prompt() { +function venv_prompt() { python_venv="" # Detect python venv - if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then - python_venv="($PYTHON_VENV_CHAR${CONDA_DEFAULT_ENV}) " + if [[ -n "${CONDA_DEFAULT_ENV:-}" ]]; then + python_venv="(${PYTHON_VENV_CHAR}${CONDA_DEFAULT_ENV}) " elif [[ -n "${VIRTUAL_ENV}" ]]; then - python_venv="($PYTHON_VENV_CHAR$(basename "${VIRTUAL_ENV}")) " + python_venv="(${PYTHON_VENV_CHAR}${VIRTUAL_ENV##*/}) " fi [[ -n "${python_venv}" ]] && echo "${python_venv}" } function prompt_command() { - local retval=$? ret_status - ret_status="$([ $retval -eq 0 ] && echo -e "$STATUS_THEME_PROMPT_OK" || echo -e "$STATUS_THEME_PROMPT_BAD")" - PS1="\n${PURITY_THEME_PROMPT_COLOR}\w $(scm_prompt_info)\n${ret_status}$(venv_prompt)" + local retval="$?" ret_status python_venv scm_prompt_info venv_prompt + case "${retval}" in + 0) + ret_status="$STATUS_THEME_PROMPT_OK" + ;; + *) + ret_status="$STATUS_THEME_PROMPT_BAD" + ;; + esac + scm_prompt_info="$(scm_prompt_info)" + venv_prompt="$(venv_prompt)" + PS1="\n${PURITY_THEME_PROMPT_COLOR}\w ${scm_prompt_info}\n${ret_status}${venv_prompt}" } safe_append_prompt_command prompt_command