Added VIRTUAL_PROMPT_ENABLED FLAG

Added -e to echo to interpret \
Updated bash conditionals to use [[]]
pull/54/head
Ryan Kanno 2011-06-09 12:18:11 -10:00
parent 09bd0ef5d0
commit b96345e00c
1 changed files with 44 additions and 29 deletions

View File

@ -53,12 +53,20 @@ SCM_THEME_PROMPT_CLEAN=' ${bold_green}✓${normal}'
SCM_THEME_PROMPT_PREFIX=' on ' SCM_THEME_PROMPT_PREFIX=' on '
SCM_THEME_PROMPT_SUFFIX='' SCM_THEME_PROMPT_SUFFIX=''
# rvm prompts
RVM_THEME_PROMPT_PREFIX='' RVM_THEME_PROMPT_PREFIX=''
RVM_THEME_PROMPT_SUFFIX='' RVM_THEME_PROMPT_SUFFIX=''
# virtualenv prompts
VIRTUALENV_THEME_PROMPT_PREFIX='' VIRTUALENV_THEME_PROMPT_PREFIX=''
VIRTUALENV_THEME_PROMPT_SUFFIX='' 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 length of PWD to display
MAX_PWD_LENGTH=20 MAX_PWD_LENGTH=20
@ -69,28 +77,30 @@ MAX_GIT_HEX_LENGTH=5
# TODO: Should check with `uname` and use ip addr # TODO: Should check with `uname` and use ip addr
function ip { function ip {
echo $(ifconfig en1 | grep "inet " | awk '{ print $2 }') echo -e $(ifconfig en1 | grep "inet " | awk '{ print $2 }')
} }
# Displays using ... # Displays virtual info prompt (virtualenv/rvm)
function virtual_info() { function virtual_prompt_info() {
local virtual_env_info=$(virtualenv_prompt) local virtual_env_info=$(virtualenv_prompt)
local rvm_info=$(rvm_version_prompt) local rvm_info=$(rvm_version_prompt)
local virtual_prompt=""
local prefix=${VIRTUAL_THEME_PROMPT_PREFIX}
local suffix=${VIRTUAL_THEME_PROMPT_SUFFIX}
# If no virtual info, just return # If no virtual info, just return
[ "$virtual_env_info" == "" -a "$rvm_info" == "" ] && return [[ -z "$virtual_env_info" && -z "$rvm_info" ]] && return
local prompt=" using"
# If virtual_env info present, append to prompt # 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 then
[ "$virtual_env_info" != "" ] && prompt="$prompt," [[ -n "$virtual_env_info" ]] && virtual_prompt="$virtual_prompt, "
prompt="$prompt rvm: ${RVM_COLOR}$rvm_info${DEFAULT_COLOR}" virtual_prompt="${virtual_prompt}rvm: ${RVM_COLOR}$rvm_info${DEFAULT_COLOR}"
fi fi
echo "$prompt" echo -e "$prefix$virtual_prompt$suffix"
} }
# Parse git info # Parse git info
@ -103,9 +113,9 @@ function git_prompt_info() {
prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} prefix=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} suffix=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
ref=$(git symbolic-ref HEAD 2> /dev/null) || return 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 # Parse hg info
@ -120,7 +130,7 @@ function hg_prompt_info() {
branch=$(hg summary 2> /dev/null | grep branch | awk '{print $2}') branch=$(hg summary 2> /dev/null | grep branch | awk '{print $2}')
changeset=$(hg summary 2> /dev/null | grep parent | 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 # Parse svn info
@ -133,8 +143,10 @@ function svn_prompt_info() {
prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX} prefix=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
suffix=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX} 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 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 [[ -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" echo -e "$prefix${REF_COLOR}$ref${DEFAULT_COLOR}:$revision$state$suffix"
} }
@ -150,19 +162,22 @@ function limited_pwd() {
then then
local truncated_symbol="..." local truncated_symbol="..."
TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH}
echo "${truncated_symbol}/${TRUNCATED_PWD#*/}" echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}"
else else
echo "${RELATIVE_PWD}" echo -e "${RELATIVE_PWD}"
fi fi
} }
# Displays the current prompt # Displays the current prompt
function prompt() { function prompt() {
local UC=$USER_COLOR local UC=$USER_COLOR
[ $UID -eq "0" ] && UC=$SUPERUSER_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) \$ " 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='> ' PS2='> '
PS4='+ ' PS4='+ '
} }