diff --git a/themes/bakke/bakke.theme.sh b/themes/bakke/bakke.theme.sh index 5758598..1f75830 100644 --- a/themes/bakke/bakke.theme.sh +++ b/themes/bakke/bakke.theme.sh @@ -13,7 +13,7 @@ RVM_THEME_PROMPT_PREFIX="|" RVM_THEME_PROMPT_SUFFIX="|" 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="${bold_cyan}$(scm_char)${green}$(scm_prompt_info)${purple}$(_omb_prompt_print_ruby_env) ${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: ${reset_color} ${yellow}\w ${green}$(scm_prompt_info)\n${reset_color}→ " diff --git a/themes/base.theme.sh b/themes/base.theme.sh index fc297b0..637faba 100644 --- a/themes/base.theme.sh +++ b/themes/base.theme.sh @@ -49,13 +49,31 @@ SCM_SVN_CHAR='⑆' SCM_NONE='NONE' SCM_NONE_CHAR='○' -RVM_THEME_PROMPT_PREFIX=' |' -RVM_THEME_PROMPT_SUFFIX='|' - THEME_SHOW_USER_HOST=${THEME_SHOW_USER_HOST:=false} USER_HOST_THEME_PROMPT_PREFIX='' USER_HOST_THEME_PROMPT_SUFFIX='' +# #new +# OMB_PROMPT_RBFU_FORMAT=' |%s|' +# OMB_PROMPT_RBENV_FORMAT=' |%s|' +# OMB_PROMPT_RVM_FORMAT=' |%s|' +# OMB_PROMPT_CHRUBY_FORMAT=' |%s|' + +# deprecate +RBFU_THEME_PROMPT_PREFIX=' |' +RBFU_THEME_PROMPT_SUFFIX='|' +RBENV_THEME_PROMPT_PREFIX=' |' +RBENV_THEME_PROMPT_SUFFIX='|' +RVM_THEME_PROMPT_PREFIX=' |' +RVM_THEME_PROMPT_SUFFIX='|' +CHRUBY_THEME_PROMPT_PREFIX=' |' +CHRUBY_THEME_PROMPT_SUFFIX='|' + +# # new +# OMB_PROMPT_VIRTUALENV_FORMAT=' |%s|' +# OMB_PROMPT_CONDAENV_FORMAT=' |%s|' +# OMB_PROMPT_PYTHON_VERSION_FORMAT=' |%s|' + # deprecate VIRTUALENV_THEME_PROMPT_PREFIX=' |' VIRTUALENV_THEME_PROMPT_SUFFIX='|' @@ -64,16 +82,21 @@ CONDAENV_THEME_PROMPT_SUFFIX='|' PYTHON_THEME_PROMPT_PREFIX=' |' PYTHON_THEME_PROMPT_SUFFIX='|' -# # new -# OMB_THEME_PROMPT_VIRTUALENV_FORMAT=' |%s|' -# OMB_THEME_PROMPT_CONDAENV_FORMAT=' |%s|' -# OMB_THEME_PROMPT_PYTHON_VERSION_FORMAT=' |%s|' - -RBENV_THEME_PROMPT_PREFIX=' |' -RBENV_THEME_PROMPT_SUFFIX='|' - -RBFU_THEME_PROMPT_PREFIX=' |' -RBFU_THEME_PROMPT_SUFFIX='|' +## @fn __omb_prompt_construct_format var value fmt_prefix[:deprecated] +## @param[in] var +## @param[in] value +## @param[in] fmt_prefix +## @param[in,opt] deprecated +## @var[out] $var +function _omb_prompt_format { + local __format=${3%%:*}_FORMAT; __format=${!__format-} + if [[ ! $__format ]]; then + local __prefix=${3#*:}_PREFIX; __prefix=${!__prefix-} # deprecate name + local __suffix=${3#*:}_SUFFIX; __suffix=${!__suffix-} # deprecate name + __format=${__prefix//'%'/'%%'}%s${__suffix//'%'/'%%'} + fi + printf -v "$1" "$__format" "$2" +} function scm { if [[ "$SCM_CHECK" = false ]]; then SCM=$SCM_NONE @@ -351,75 +374,92 @@ function hg_prompt_vars { fi } -function rvm_version_prompt { - if which rvm &> /dev/null; then - rvm=$(rvm-prompt) || return - if [ -n "$rvm" ]; then - echo -e "$RVM_THEME_PROMPT_PREFIX$rvm$RVM_THEME_PROMPT_SUFFIX" - fi +function _omb_prompt_get_rbfu { + rbfu=$RBFU_RUBY_VERSION + [[ $rbfu ]] || return 1 + _omb_prompt_format rbfu "$rbfu" OMB_PROMPT_RBFU:RBFU_THEME_PROMPT +} + +function _omb_prompt_get_rbenv { + rbenv= + _omb_util_command_exists rbenv || return 1 + + rbenv=$(rbenv version-name) + rbenv commands | command grep -q gemset && + gemset=$(rbenv gemset active 2> /dev/null) && + rbenv="$rbenv@${gemset%% *}" + + [[ $rbenv != system ]] || return 1 + _omb_prompt_format rbenv "$rbenv" OMB_PROMPT_RBENV:RBENV_THEME_PROMPT +} + +function _omb_prompt_get_rvm { + rvm= + if _omb_util_command_exists rvm-prompt; then + rvm=$(rvm-prompt) + elif _omb_util_command_exists rvm; then + local rvm_current=$(rvm tools identifier) + local rvm_default=$(rvm strings default) + [[ $rvm_current && $rvm_default && $rvm_current != "$rvm_default" ]] || return 1 + rvm=$rvm_current fi + + [[ $rvm ]] || return 1 + _omb_prompt_format rvm "$rvm" OMB_PROMPT_RVM:RVM_THEME_PROMPT } -function rbenv_version_prompt { - if which rbenv &> /dev/null; then - rbenv=$(rbenv version-name) || return - $(rbenv commands | grep -q gemset) && gemset=$(rbenv gemset active 2> /dev/null) && rbenv="$rbenv@${gemset%% *}" - if [ $rbenv != "system" ]; then - echo -e "$RBENV_THEME_PROMPT_PREFIX$rbenv$RBENV_THEME_PROMPT_SUFFIX" - fi - fi +function _omb_prompt_get_chruby { + chruby= + _omb_util_function_exists chruby || return 1 + + _omb_util_function_exists chruby_auto && chruby=$(chruby_auto) + + local ruby_version + ruby_version=$(ruby --version | command awk '{print $1, $2;}') || return + chruby | command grep -q '\*' || ruby_version="${ruby_version} (system)" + _omb_prompt_format ruby_version "$ruby_version" OMB_PROMPT_CHRUBY:CHRUBY_THEME_PROMPT + + chruby+=$ruby_version } -function rbfu_version_prompt { - if [[ $RBFU_RUBY_VERSION ]]; then - echo -e "${RBFU_THEME_PROMPT_PREFIX}${RBFU_RUBY_VERSION}${RBFU_THEME_PROMPT_SUFFIX}" - fi +function _omb_prompt_get_ruby_env { + local rbfu rbenv rvm chruby + _omb_prompt_get_rbfu + _omb_prompt_get_rbenv + _omb_prompt_get_rvm + _omb_prompt_get_chruby + ruby_env=$rbfu$rbenv$rvm$chruby + [[ $ruby_env ]] } -function chruby_version_prompt { - if declare -f -F chruby &> /dev/null; then - if declare -f -F chruby_auto &> /dev/null; then - chruby_auto - fi +_omb_util_defun_print _omb_prompt_{print,get}_rbfu rbfu +_omb_util_defun_print _omb_prompt_{print,get}_rbenv rbenv +_omb_util_defun_print _omb_prompt_{print,get}_rvm rvm +_omb_util_defun_print _omb_prompt_{print,get}_chruby chruby +_omb_util_defun_print _omb_prompt_{print,get}_ruby_env ruby_env - ruby_version=$(ruby --version | awk '{print $1, $2;}') || return - - if [[ ! $(chruby | grep '*') ]]; then - ruby_version="${ruby_version} (system)" - fi - echo -e "${CHRUBY_THEME_PROMPT_PREFIX}${ruby_version}${CHRUBY_THEME_PROMPT_SUFFIX}" - fi -} - -function ruby_version_prompt { - echo -e "$(rbfu_version_prompt)$(rbenv_version_prompt)$(rvm_version_prompt)$(chruby_version_prompt)" -} +_omb_util_defun_deprecate 20000 rbfu_version_prompt _omb_prompt_print_rbfu +_omb_util_defun_deprecate 20000 rbenv_version_prompt _omb_prompt_print_rbenv +_omb_util_defun_deprecate 20000 rvm_version_prompt _omb_prompt_print_rvm +_omb_util_defun_deprecate 20000 chruby_version_prompt _omb_prompt_print_chruby +_omb_util_defun_deprecate 20000 ruby_version_prompt _omb_prompt_print_ruby_env function _omb_prompt_get_virtualenv { virtualenv= [[ ${VIRTUAL_ENV-} ]] || return 1 - local prefix=${VIRTUALENV_THEME_PROMPT_PREFIX-} - local suffix=${VIRTUALENV_THEME_PROMPT_SUFFIX-} - local format=${OMB_THEME_PROMPT_VIRTUALENV_FORMAT-${prefix//'%'/'%%'}%s${suffix//'%'/'%%'}} - printf -v virtualenv "$format" "$(basename "$VIRTUAL_ENV")" + _omb_prompt_format virtualenv "$(basename "$VIRTUAL_ENV")" OMB_PROMPT_VIRTUALENV:VIRTUALENV_THEME_PROMPT } function _omb_prompt_get_condaenv { condaenv= [[ ${CONDA_DEFAULT_ENV-} ]] || return 1 - local prefix=${CONDAENV_THEME_PROMPT_PREFIX-} - local suffix=${CONDAENV_THEME_PROMPT_SUFFIX-} - local format=${OMB_THEME_PROMPT_CONDAENV_FORMAT-${prefix//'%'/'%%'}%s${suffix//'%'/'%%'}} - printf -v condaenv "$format" "$CONDA_DEFAULT_ENV" + _omb_prompt_format condaenv "$CONDA_DEFAULT_ENV" OMB_PROMPT_CONDAENV:CONDAENV_THEME_PROMPT } function _omb_prompt_get_python_version { python_version=$(python --version 2>&1 | command awk '{print "py-"$2;}') [[ $python_version ]] || return 1 - local prefix=${PYTHON_THEME_PROMPT_PREFIX-} - local suffix=${PYTHON_THEME_PROMPT_SUFFIX-} - local format=${OMB_THEME_PROMPT_PYTHON_VERSION_FORMAT-${prefix//'%'/'%%'}%s${suffix//'%'/'%%'}} - printf -v python_version "$format" "$python_version" + _omb_prompt_format python_version "$python_version" OMB_PROMPT_PYTHON_VERSION:PYTHON_THEME_PROMPT } function _omb_prompt_get_python_venv { @@ -543,9 +583,7 @@ function aws_profile { # Returns true if $1 is a shell function. -fn_exists() { - type $1 | grep -q 'shell function' -} +_omb_util_defun_deprecate 20000 fn_exists _omb_util_function_exists function safe_append_prompt_command { local prompt_re @@ -560,8 +598,8 @@ function safe_append_prompt_command { fi # See if we need to use the overriden version - if [[ $(fn_exists function append_prompt_command_override) ]]; then - append_prompt_command_override $1 + if _omb_util_function_exists append_prompt_command_override; then + append_prompt_command_override "$1" return fi diff --git a/themes/bobby-python/bobby-python.theme.sh b/themes/bobby-python/bobby-python.theme.sh index e2e5a97..e66acb4 100644 --- a/themes/bobby-python/bobby-python.theme.sh +++ b/themes/bobby-python/bobby-python.theme.sh @@ -12,7 +12,7 @@ GIT_THEME_PROMPT_SUFFIX="${green}|" CONDAENV_THEME_PROMPT_SUFFIX="|" 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="${bold_cyan}$(scm_char)${green}$(scm_prompt_info)${purple}$(_omb_prompt_print_ruby_env) ${yellow}\h ${reset_color}in ${green}\w ${reset_color}\n${green}→${reset_color} " PS1="\n${yellow}$(python_version_prompt) ${purple}\h ${reset_color}in ${green}\w\n${bold_cyan}$(scm_char)${green}$(scm_prompt_info) ${green}→${reset_color} " } diff --git a/themes/bobby/bobby.theme.sh b/themes/bobby/bobby.theme.sh index 0e70f8a..63883a6 100644 --- a/themes/bobby/bobby.theme.sh +++ b/themes/bobby/bobby.theme.sh @@ -22,8 +22,8 @@ __bobby_clock() { } 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$(battery_char) $(__bobby_clock)${yellow}$(ruby_version_prompt) ${purple}\h ${reset_color}in ${green}\w\n${bold_cyan}$(scm_prompt_char_info) ${green}→${reset_color} " + #PS1="${bold_cyan}$(scm_char)${green}$(scm_prompt_info)${purple}$(_omb_prompt_print_ruby_env) ${yellow}\h ${reset_color}in ${green}\w ${reset_color}\n${green}→${reset_color} " + PS1="\n$(battery_char) $(__bobby_clock)${yellow}$(_omb_prompt_print_ruby_env) ${purple}\h ${reset_color}in ${green}\w\n${bold_cyan}$(scm_prompt_char_info) ${green}→${reset_color} " } THEME_SHOW_CLOCK_CHAR=${THEME_SHOW_CLOCK_CHAR:-"true"} diff --git a/themes/brainy/brainy.theme.sh b/themes/brainy/brainy.theme.sh index 8562646..722db71 100644 --- a/themes/brainy/brainy.theme.sh +++ b/themes/brainy/brainy.theme.sh @@ -130,7 +130,7 @@ ___brainy_prompt_ruby() { [ "${THEME_SHOW_RUBY}" != "true" ] && return color=$bold_white box="[|]" - info="rb-$(ruby_version_prompt)" + info="rb-$(_omb_prompt_print_ruby_env)" printf "%s|%s|%s|%s" "${color}" "${info}" "${bold_red}" "${box}" } diff --git a/themes/cooperkid/cooperkid.theme.sh b/themes/cooperkid/cooperkid.theme.sh index 1ffb95a..40f8ba3 100644 --- a/themes/cooperkid/cooperkid.theme.sh +++ b/themes/cooperkid/cooperkid.theme.sh @@ -12,22 +12,13 @@ SCM_THEME_PROMPT_SUFFIX="" GIT_SHA_PREFIX="${blue}" GIT_SHA_SUFFIX="${reset_color}" -function rvm_version_prompt { - if which rvm &> /dev/null; then - rvm=$(rvm-prompt) || return - if [ -n "$rvm" ]; then - echo -e "$rvm" - fi - fi -} - function git_short_sha() { SHA=$(git rev-parse --short HEAD 2> /dev/null) && echo "$GIT_SHA_PREFIX$SHA$GIT_SHA_SUFFIX" } function prompt() { local return_status="" - local ruby="${red}$(ruby_version_prompt)${reset_color}" + local ruby="${red}$(_omb_prompt_print_ruby_env)${reset_color}" local user_host="${green}\h @ \w${reset_color}" local git_branch="$(git_short_sha)${cyan}$(scm_prompt_info)${reset_color}" local prompt_symbol=' ' diff --git a/themes/doubletime/doubletime.theme.sh b/themes/doubletime/doubletime.theme.sh index 90c619b..512a97d 100644 --- a/themes/doubletime/doubletime.theme.sh +++ b/themes/doubletime/doubletime.theme.sh @@ -45,7 +45,7 @@ function prompt_setter() { history -c history -r PS1=" -$(clock_prompt) $(scm_char) [${THEME_PROMPT_HOST_COLOR}\u@${THEME_PROMPT_HOST}$reset_color] $(_omb_prompt_print_python_venv)$(ruby_version_prompt)\w +$(clock_prompt) $(scm_char) [${THEME_PROMPT_HOST_COLOR}\u@${THEME_PROMPT_HOST}$reset_color] $(_omb_prompt_print_python_venv)$(_omb_prompt_print_ruby_env)\w $(doubletime_scm_prompt)$reset_color $ " PS2='> ' PS4='+ ' diff --git a/themes/doubletime_multiline/doubletime_multiline.theme.sh b/themes/doubletime_multiline/doubletime_multiline.theme.sh index 1044a89..d826117 100644 --- a/themes/doubletime_multiline/doubletime_multiline.theme.sh +++ b/themes/doubletime_multiline/doubletime_multiline.theme.sh @@ -8,7 +8,7 @@ function prompt_setter() { history -c history -r PS1=" -$(clock_prompt) $(scm_char) [$THEME_PROMPT_HOST_COLOR\u@${THEME_PROMPT_HOST}$reset_color] $(_omb_prompt_print_python_venv)$(ruby_version_prompt) +$(clock_prompt) $(scm_char) [$THEME_PROMPT_HOST_COLOR\u@${THEME_PROMPT_HOST}$reset_color] $(_omb_prompt_print_python_venv)$(_omb_prompt_print_ruby_env) \w $(doubletime_scm_prompt)$reset_color $ " PS2='> ' diff --git a/themes/envy/envy.theme.sh b/themes/envy/envy.theme.sh index 277e375..cde9982 100644 --- a/themes/envy/envy.theme.sh +++ b/themes/envy/envy.theme.sh @@ -10,7 +10,7 @@ GIT_THEME_PROMPT_PREFIX=" ${green}|" GIT_THEME_PROMPT_SUFFIX="${green}|" function prompt_command() { - PS1="\n${yellow}$(ruby_version_prompt) ${purple}\h ${reset_color}in ${green}\w\n${bold_cyan}$(scm_char)${green}$(scm_prompt_info) ${green}→${reset_color} " + PS1="\n${yellow}$(_omb_prompt_print_ruby_env) ${purple}\h ${reset_color}in ${green}\w\n${bold_cyan}$(scm_char)${green}$(scm_prompt_info) ${green}→${reset_color} " } safe_append_prompt_command prompt_command diff --git a/themes/hawaii50/hawaii50.theme.sh b/themes/hawaii50/hawaii50.theme.sh index fdf64da..09d6a09 100644 --- a/themes/hawaii50/hawaii50.theme.sh +++ b/themes/hawaii50/hawaii50.theme.sh @@ -84,7 +84,7 @@ IP_SEPARATOR=', ' # FUNCS ======================================================================= function get_ip_info { - myip=$(curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+') + local myip=$(curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+') echo -e "$(ips | sed -e :a -e '$!N;s/\n/${IP_SEPARATOR}/;ta' | sed -e 's/127\.0\.0\.1\${IP_SEPARATOR}//g'), ${myip}" } @@ -98,22 +98,20 @@ function ip_prompt_info() { # Displays virtual info prompt (virtualenv/rvm) function virtual_prompt_info() { local python_venv; _omb_prompt_get_python_venv - local rvm_info=$(ruby_version_prompt) + local ruby_env; _omb_prompt_get_ruby_env local virtual_prompt="" local prefix=${VIRTUAL_THEME_PROMPT_PREFIX} local suffix=${VIRTUAL_THEME_PROMPT_SUFFIX} # If no virtual info, just return - [[ -z "$python_venv" && -z "$rvm_info" ]] && return + [[ $python_venv$ruby_env ]] || return # If virtual_env info present, append to prompt - [[ -n "$python_venv" ]] && virtual_prompt="virtualenv: ${VE_COLOR}$python_venv${DEFAULT_COLOR}" + [[ $python_venv ]] && virtual_prompt="virtualenv: ${VE_COLOR}$python_venv${DEFAULT_COLOR}" - if [[ -n "$rvm_info" ]] - then - [[ -n "$python_venv" ]] && virtual_prompt="$virtual_prompt, " - virtual_prompt="${virtual_prompt}rvm: ${RVM_COLOR}$rvm_info${DEFAULT_COLOR}" + if [[ $ruby_env ]]; then + virtual_prompt="${virtual_prompt:+$virtual_prompt, }rvm: ${RVM_COLOR}$ruby_env${DEFAULT_COLOR}" fi echo -e "$prefix$virtual_prompt$suffix" } @@ -121,14 +119,14 @@ function virtual_prompt_info() { # Parse git info function git_prompt_info() { if [[ -n $(git status -s 2> /dev/null |grep -v ^# |grep -v "working directory clean") ]]; then - state=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} + local state=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + local state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} fi - prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} - suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} - ref=$(git symbolic-ref HEAD 2> /dev/null) || return - commit_id=$(git rev-parse HEAD 2>/dev/null) || return + local prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} + local suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} + local ref=$(git symbolic-ref HEAD 2> /dev/null) || return + local commit_id=$(git rev-parse HEAD 2>/dev/null) || return echo -e "$prefix${REF_COLOR}${ref#refs/heads/}${DEFAULT_COLOR}:${commit_id:0:$MAX_GIT_HEX_LENGTH}$state$suffix" } @@ -136,14 +134,14 @@ function git_prompt_info() { # Parse hg info function hg_prompt_info() { if [[ -n $(hg status 2> /dev/null) ]]; then - state=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} + local state=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${HG_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + local state=${HG_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} fi - prefix=${HG_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} - suffix=${HG_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} - branch=$(hg summary 2> /dev/null | grep branch | awk '{print $2}') - changeset=$(hg summary 2> /dev/null | grep parent | awk '{print $2}') + local prefix=${HG_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} + local suffix=${HG_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} + local branch=$(hg summary 2> /dev/null | grep branch | awk '{print $2}') + local changeset=$(hg summary 2> /dev/null | grep parent | awk '{print $2}') echo -e "$prefix${REF_COLOR}${branch}${DEFAULT_COLOR}:${changeset#*:}$state$suffix" } @@ -151,16 +149,16 @@ function hg_prompt_info() { # Parse svn info function svn_prompt_info() { if [[ -n $(svn status --ignore-externals -q 2> /dev/null) ]]; then - state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} + local state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + local state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} fi - prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} - suffix=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} - ref=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }') || return + local prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} + local suffix=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} + local ref=$(svn info 2> /dev/null | awk -F/ '/^URL:/ { for (i=0; i<=NF; i++) { if ($i == "branches" || $i == "tags" ) { print $(i+1); break }; if ($i == "trunk") { print $i; break } } }') || return [[ -z $ref ]] && return - revision=$(svn info 2> /dev/null | sed -ne 's#^Revision: ##p' ) + local revision=$(svn info 2> /dev/null | sed -ne 's#^Revision: ##p' ) echo -e "$prefix${REF_COLOR}$ref${DEFAULT_COLOR}:$revision$state$suffix" } @@ -169,14 +167,13 @@ function svn_prompt_info() { function limited_pwd() { # Replace $HOME with ~ if possible - RELATIVE_PWD=${PWD/#$HOME/\~} + local RELATIVE_PWD=${PWD/#$HOME/\~} local offset=$((${#RELATIVE_PWD}-$MAX_PWD_LENGTH)) - if [ $offset -gt "0" ] - then + if ((offset > 0)); then local truncated_symbol="..." - TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} + local TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" else echo -e "${RELATIVE_PWD}" @@ -186,7 +183,7 @@ function limited_pwd() { # Displays the current prompt function prompt() { local UC=$USER_COLOR - [ $UID -eq "0" ] && UC=$SUPERUSER_COLOR + ((UID == 0)) && UC=$SUPERUSER_COLOR if [[ $VIRTUAL_PROMPT_ENABLED == 1 ]]; then PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h$(ip_prompt_info) ${DEFAULT_COLOR}in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info)${reset_color} \$ " diff --git a/themes/iterate/iterate.theme.sh b/themes/iterate/iterate.theme.sh index 2031b7f..534adce 100644 --- a/themes/iterate/iterate.theme.sh +++ b/themes/iterate/iterate.theme.sh @@ -27,14 +27,6 @@ RBENV_THEME_PROMPT_SUFFIX="| " RBFU_THEME_PROMPT_PREFIX="|" RBFU_THEME_PROMPT_SUFFIX="| " -function rvm_version_prompt { - if which rvm &> /dev/null; then - rvm_current=$(rvm tools identifier) || return - rvm_default=$(rvm strings default) || return - [ "$rvm_current" != "$rvm_default" ] && ( echo -e "$RVM_THEME_PROMPT_PREFIX$rvm_current$RVM_THEME_PROMPT_SUFFIX" ) - fi -} - function git_prompt_info { git_prompt_vars echo -e "$SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_GIT_AHEAD$SCM_GIT_BEHIND$SCM_GIT_STASH$SCM_SUFFIX" @@ -42,7 +34,7 @@ function git_prompt_info { LAST_PROMPT="" function prompt_command() { - local new_PS1="${bold_cyan}$(scm_char)${yellow}$(ruby_version_prompt)${green}\w $(scm_prompt_info)" + local new_PS1="${bold_cyan}$(scm_char)${yellow}$(_omb_prompt_print_ruby_env)${green}\w $(scm_prompt_info)" local new_prompt=$(PS1="$new_PS1" "$BASH" --norc -i &1 | sed -n '${s/^\(.*\)exit$/\1/p;}') if [ "$LAST_PROMPT" = "$new_prompt" ]; then diff --git a/themes/luan/luan.theme.sh b/themes/luan/luan.theme.sh index 8b7059e..9157506 100644 --- a/themes/luan/luan.theme.sh +++ b/themes/luan/luan.theme.sh @@ -17,7 +17,7 @@ function prompt_command() { dtime="$(clock_prompt)" user_host="${green}\u@${cyan}\h${normal}" current_dir="${bold_blue}\w${normal}" - rvm_ruby="${bold_red}$(ruby_version_prompt)${normal}" + rvm_ruby="${bold_red}$(_omb_prompt_print_ruby_env)${normal}" git_branch="$(scm_prompt_info)${normal}" prompt="${bold_green}\$${normal} " arrow="${bold_white}▶${normal} " diff --git a/themes/mbriggs/mbriggs.theme.sh b/themes/mbriggs/mbriggs.theme.sh index 169f8d7..6c833a5 100644 --- a/themes/mbriggs/mbriggs.theme.sh +++ b/themes/mbriggs/mbriggs.theme.sh @@ -18,7 +18,7 @@ function git_short_sha() { function prompt() { local return_status="" - local ruby="${red}$(ruby_version_prompt)${reset_color}" + local ruby="${red}$(_omb_prompt_print_ruby_env)${reset_color}" local user_host="${green}\h${reset_color}" local current_path="\w" local n_commands="\!" diff --git a/themes/pete/pete.theme.sh b/themes/pete/pete.theme.sh index 73fdb05..42f2f01 100644 --- a/themes/pete/pete.theme.sh +++ b/themes/pete/pete.theme.sh @@ -5,7 +5,7 @@ prompt_setter() { history -a history -c history -r - PS1="($(clock_prompt)) $(scm_char) [$blue\u$reset_color@$green\H$reset_color] $yellow\w${reset_color}$(scm_prompt_info)$(ruby_version_prompt) $reset_color " + PS1="($(clock_prompt)) $(scm_char) [$blue\u$reset_color@$green\H$reset_color] $yellow\w${reset_color}$(scm_prompt_info)$(_omb_prompt_print_ruby_env) $reset_color " PS2='> ' PS4='+ ' } diff --git a/themes/rainbowbrite/rainbowbrite.theme.sh b/themes/rainbowbrite/rainbowbrite.theme.sh index 63c64b7..0f76fc1 100644 --- a/themes/rainbowbrite/rainbowbrite.theme.sh +++ b/themes/rainbowbrite/rainbowbrite.theme.sh @@ -11,9 +11,9 @@ prompt_setter() { history -c history -r # displays user@server in purple - # PS1="$red$(scm_char) $purple\u@\h$reset_color:$blue\w$yellow$(scm_prompt_info)$(ruby_version_prompt) $black\$$reset_color " + # PS1="$red$(scm_char) $purple\u@\h$reset_color:$blue\w$yellow$(scm_prompt_info)$(_omb_prompt_print_ruby_env) $black\$$reset_color " # no user@server - PS1="$red$(scm_char) $blue\w$yellow$(scm_prompt_info)$(ruby_version_prompt) $black\$$reset_color " + PS1="$red$(scm_char) $blue\w$yellow$(scm_prompt_info)$(_omb_prompt_print_ruby_env) $black\$$reset_color " PS2='> ' PS4='+ ' } diff --git a/themes/sirup/sirup.theme.sh b/themes/sirup/sirup.theme.sh index 38fcab4..289ce97 100644 --- a/themes/sirup/sirup.theme.sh +++ b/themes/sirup/sirup.theme.sh @@ -1,22 +1,20 @@ # For unstaged(*) and staged(+) values next to branch name in __git_ps1 GIT_PS1_SHOWDIRTYSTATE="enabled" -function rvm_version_prompt { - local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}') +function _omb_theme_sirup_rubygem { + local gemset=$(command awk -F'@' '{print $2}' <<< "$GEM_HOME") + [[ $gemset ]] && gemset="@$gemset" - [ "$gemset" != "" ] && gemset="@$gemset" - local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}') + local version=$(command awk -F'-' '{print $2}' <<< "$MY_RUBY_HOME") + [[ $version == 1.9.2 ]] && version= - [ "$version" == "1.9.2" ] && version="" - - local full="$version$gemset" - - [ "$full" != "" ] && echo "$full" + local full=$version$gemset + [[ $full ]] && echo "$full" } -function prompt_command() { - # Check http://github.com/Sirupsen/dotfiles for screenshot - PS1="$blue\W/$bold_blue$(rvm_version_prompt)$bold_green$(__git_ps1 " (%s)") ${normal}$ " +function prompt_command { + # Check http://github.com/Sirupsen/dotfiles for screenshot + PS1="$blue\W/$bold_blue$(_omb_theme_sirup_rubygem)$bold_green$(__git_ps1 " (%s)") ${normal}$ " } safe_append_prompt_command prompt_command diff --git a/themes/tylenol/tylenol.theme.sh b/themes/tylenol/tylenol.theme.sh index ab5a782..db39e2c 100644 --- a/themes/tylenol/tylenol.theme.sh +++ b/themes/tylenol/tylenol.theme.sh @@ -14,7 +14,7 @@ VIRTUALENV_THEME_PROMPT_PREFIX='|' VIRTUALENV_THEME_PROMPT_SUFFIX='|' function prompt_command() { - PS1="\n${green}$(_omb_prompt_print_python_venv)${red}$(ruby_version_prompt) ${reset_color}\h ${orange}in ${reset_color}\w\n${yellow}$(scm_char)$(scm_prompt_info) ${yellow}→${white} " + PS1="\n${green}$(_omb_prompt_print_python_venv)${red}$(_omb_prompt_print_ruby_env) ${reset_color}\h ${orange}in ${reset_color}\w\n${yellow}$(scm_char)$(scm_prompt_info) ${yellow}→${white} " } safe_append_prompt_command prompt_command diff --git a/themes/wanelo/wanelo.theme.sh b/themes/wanelo/wanelo.theme.sh index 437fd32..ecb39d2 100644 --- a/themes/wanelo/wanelo.theme.sh +++ b/themes/wanelo/wanelo.theme.sh @@ -18,7 +18,7 @@ function prompt_command() { else status=💔 fi - PS1="\n${yellow}$(ruby_version_prompt) ${purple}\h ${reset_color}in ${green}\w $status \n${bold_cyan} ${blue}|$(clock_prompt)|${green}$(scm_prompt_info) ${green}→${reset_color} " + PS1="\n${yellow}$(_omb_prompt_print_ruby_env) ${purple}\h ${reset_color}in ${green}\w $status \n${bold_cyan} ${blue}|$(clock_prompt)|${green}$(scm_prompt_info) ${green}→${reset_color} " } THEME_CLOCK_COLOR=${THEME_CLOCK_COLOR:-"$blue"}