Added VIRTUAL_PROMPT_ENABLED FLAG
Added -e to echo to interpret \ Updated bash conditionals to use [[]]pull/54/head
parent
09bd0ef5d0
commit
b96345e00c
|
|
@ -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=""
|
||||
|
||||
local prefix=${VIRTUAL_THEME_PROMPT_PREFIX}
|
||||
local suffix=${VIRTUAL_THEME_PROMPT_SUFFIX}
|
||||
|
||||
# If no virtual info, just return
|
||||
[ "$virtual_env_info" == "" -a "$rvm_info" == "" ] && return
|
||||
|
||||
local prompt=" using"
|
||||
[[ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue