From: Ryan Kanno Date: Thu, 9 Jun 2011 22:18:11 +0000 (-1000) Subject: Added VIRTUAL_PROMPT_ENABLED FLAG X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=b96345e00c64dc2be94275f3d1b6f298bf6af378;p=common%2Fbash_it.git Added VIRTUAL_PROMPT_ENABLED FLAG Added -e to echo to interpret \ Updated bash conditionals to use [[]] --- diff --git a/themes/hawaii50/hawaii50.theme.bash b/themes/hawaii50/hawaii50.theme.bash index 946b808..6202eb4 100644 --- a/themes/hawaii50/hawaii50.theme.bash +++ b/themes/hawaii50/hawaii50.theme.bash @@ -53,12 +53,20 @@ SCM_THEME_PROMPT_CLEAN=' ${bold_green}✓${normal}' SCM_THEME_PROMPT_PREFIX=' on ' SCM_THEME_PROMPT_SUFFIX='' +# rvm prompts RVM_THEME_PROMPT_PREFIX='' RVM_THEME_PROMPT_SUFFIX='' +# virtualenv prompts VIRTUALENV_THEME_PROMPT_PREFIX='' VIRTUALENV_THEME_PROMPT_SUFFIX='' +# virtual prompts +VIRTUAL_PROMPT_ENABLED=1 + +VIRTUAL_THEME_PROMPT_PREFIX=' using ' +VIRTUAL_THEME_PROMPT_SUFFIX='' + # Max length of PWD to display MAX_PWD_LENGTH=20 @@ -69,72 +77,76 @@ MAX_GIT_HEX_LENGTH=5 # TODO: Should check with `uname` and use ip addr function ip { - echo $(ifconfig en1 | grep "inet " | awk '{ print $2 }') + echo -e $(ifconfig en1 | grep "inet " | awk '{ print $2 }') } -# Displays using ... -function virtual_info() { +# Displays virtual info prompt (virtualenv/rvm) +function virtual_prompt_info() { local virtual_env_info=$(virtualenv_prompt) local rvm_info=$(rvm_version_prompt) + local virtual_prompt="" - # If no virtual info, just return - [ "$virtual_env_info" == "" -a "$rvm_info" == "" ] && return + local prefix=${VIRTUAL_THEME_PROMPT_PREFIX} + local suffix=${VIRTUAL_THEME_PROMPT_SUFFIX} - local prompt=" using" + # If no virtual info, just return + [[ -z "$virtual_env_info" && -z "$rvm_info" ]] && return # If virtual_env info present, append to prompt - [ "$virtual_env_info" != "" ] && prompt="$prompt virtualenv: ${VE_COLOR}$virtual_env_info${DEFAULT_COLOR}" + [[ -n "$virtual_env_info" ]] && virtual_prompt="virtualenv: ${VE_COLOR}$virtual_env_info${DEFAULT_COLOR}" - if [ "$rvm_info" != "" ] + if [[ -n "$rvm_info" ]] then - [ "$virtual_env_info" != "" ] && prompt="$prompt," - prompt="$prompt rvm: ${RVM_COLOR}$rvm_info${DEFAULT_COLOR}" + [[ -n "$virtual_env_info" ]] && virtual_prompt="$virtual_prompt, " + virtual_prompt="${virtual_prompt}rvm: ${RVM_COLOR}$rvm_info${DEFAULT_COLOR}" fi - echo "$prompt" + echo -e "$prefix$virtual_prompt$suffix" } # 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} + state=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + 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 - rawhex=$(git rev-parse HEAD 2>/dev/null) || return + commit_id=$(git rev-parse HEAD 2>/dev/null) || return - echo "$prefix${REF_COLOR}${ref#refs/heads/}${DEFAULT_COLOR}:${rawhex:0:$MAX_GIT_HEX_LENGTH}$state$suffix" + echo -e "$prefix${REF_COLOR}${ref#refs/heads/}${DEFAULT_COLOR}:${commit_id:0:$MAX_GIT_HEX_LENGTH}$state$suffix" } # Parse hg info function hg_prompt_info() { if [[ -n $(hg status 2> /dev/null) ]]; then - state=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} + state=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${HG_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + 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}') - echo "$prefix${REF_COLOR}${branch}${DEFAULT_COLOR}:${changeset#*:}$state$suffix" + echo -e "$prefix${REF_COLOR}${branch}${DEFAULT_COLOR}:${changeset#*:}$state$suffix" } # 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} + state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY} else - state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN} + 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 - revision=$(svn info 2> /dev/null | sed -ne 's#^Revision: ##p' ) [[ -z $ref ]] && return + + revision=$(svn info 2> /dev/null | sed -ne 's#^Revision: ##p' ) + echo -e "$prefix${REF_COLOR}$ref${DEFAULT_COLOR}:$revision$state$suffix" } @@ -150,21 +162,24 @@ function limited_pwd() { then local truncated_symbol="..." TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} - echo "${truncated_symbol}/${TRUNCATED_PWD#*/}" + echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" else - echo "${RELATIVE_PWD}" + echo -e "${RELATIVE_PWD}" fi } # Displays the current prompt function prompt() { + local UC=$USER_COLOR + [ $UID -eq "0" ] && UC=$SUPERUSER_COLOR - local UC=$USER_COLOR - [ $UID -eq "0" ] && UC=$SUPERUSER_COLOR - - PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR})${DEFAULT_COLOR} in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_info)$(scm_prompt_info) \$ " - PS2='> ' - PS4='+ ' + if [[ $VIRTUAL_PROMPT_ENABLED == 1 ]]; then + PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR})${DEFAULT_COLOR} in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(virtual_prompt_info)$(scm_prompt_info) \$ " + else + PS1="$(scm_char) ${UC}\u ${DEFAULT_COLOR}at ${MACHINE_COLOR}\h ${DEFAULT_COLOR}(${IP_COLOR}$(ip)${DEFAULT_COLOR})${DEFAULT_COLOR} in ${DIRECTORY_COLOR}$(limited_pwd)${DEFAULT_COLOR}$(scm_prompt_info) \$ " + fi + PS2='> ' + PS4='+ ' } PROMPT_COMMAND=prompt