Merge remote-tracking branch 'jfsiii/master'

Conflicts:
	bash_it.sh
pull/62/merge
Travis Swicegood 2011-10-29 18:37:31 -05:00
commit ad7c1eb304
5 changed files with 117 additions and 84 deletions

View File

@ -4,29 +4,17 @@
# Reload Library
alias reload='source ~/.bash_profile'
# Load the framework
# Load colors first so they can be use in base theme
source "${BASH}/themes/colors.theme.bash"
source "${BASH}/themes/base.theme.bash"
# Library
LIB="${BASH}/lib/*.bash"
for config_file in $LIB
do
if [ -e "${config_file}" ]; then
source $config_file
fi
done
# Only set $BASH_IT if it's not already set
[ -z "$BASH_IT" ] && export BASH_IT=$HOME/.bash_it
# Load enabled aliases, completion, plugins
for file_type in "aliases" "completion" "plugins"
do
if [ ! -d "${BASH}/${file_type}/enabled" ]
if [ ! -d "${BASH_IT}/${file_type}/enabled" ]
then
continue
fi
FILES="${BASH}/${file_type}/enabled/*.bash"
FILES="${BASH_IT}/${file_type}/enabled/*.bash"
for config_file in $FILES
do
if [ -e "${config_file}" ]; then
@ -36,13 +24,13 @@ do
done
# Load any custom aliases that the user has added
if [ -e "${BASH}/aliases/custom.aliases.bash" ]
if [ -e "${BASH_IT}/aliases/custom.aliases.bash" ]
then
source "${BASH}/aliases/custom.aliases.bash"
source "${BASH_IT}/aliases/custom.aliases.bash"
fi
# Custom
CUSTOM="${BASH}/custom/*.bash"
CUSTOM="${BASH_IT}/custom/*.bash"
for config_file in $CUSTOM
do
if [ -e "${config_file}" ]; then
@ -50,6 +38,16 @@ do
fi
done
# Load colors first so they can be use in base theme
source "${BASH_IT}/themes/colors.theme.bash"
source "${BASH_IT}/themes/base.theme.bash"
# library
LIB="${BASH_IT}/lib/*.bash"
for config_file in $LIB
do
source $config_file
done
unset config_file
if [[ $PROMPT ]]; then

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
BASH="$HOME/.bash_it"
BASH_IT="$HOME/.bash_it"
cp $HOME/.bash_profile $HOME/.bash_profile.bak
@ -30,24 +30,24 @@ done
function load_all() {
file_type=$1
[ ! -d "$BASH/$file_type/enabled" ] && mkdir "$BASH/${file_type}/enabled"
ln -s $BASH/${file_type}/available/* "${BASH}/${file_type}/enabled"
[ ! -d "$BASH_IT/$file_type/enabled" ] && mkdir "$BASH_IT/${file_type}/enabled"
ln -s $BASH_IT/${file_type}/available/* "${BASH_IT}/${file_type}/enabled"
}
function load_some() {
file_type=$1
for file in `ls $BASH/${file_type}/available`
for file in `ls $BASH_IT/${file_type}/available`
do
if [ ! -d "$BASH/$file_type/enabled" ]
if [ ! -d "$BASH_IT/$file_type/enabled" ]
then
mkdir "$BASH/$file_type/enabled"
mkdir "$BASH_IT/$file_type/enabled"
fi
while true
do
read -p "Would you like to enable the ${file%.*.*} $file_type? [Y/N] " RESP
case $RESP in
[yY])
ln -s "$BASH/$file_type/available/$file" "$BASH/$file_type/enabled"
ln -s "$BASH_IT/$file_type/available/$file" "$BASH_IT/$file_type/enabled"
break
;;
[nN])

View File

@ -8,6 +8,6 @@ export GREP_COLOR='1;33'
export LSCOLORS='Gxfxcxdxdxegedabagacad'
# Load the theme
if [[ $BASH_THEME ]]; then
source "$BASH/themes/$BASH_THEME/$BASH_THEME.theme.bash"
if [[ $BASH_IT_THEME ]]; then
source "$BASH_IT/themes/$BASH_IT_THEME/$BASH_IT_THEME.theme.bash"
fi

View File

@ -7,11 +7,11 @@
export PATH=$PATH:~/.gem/ruby/1.8/bin:/opt/nginx/sbin
# Path to the bash it configuration
export BASH=$HOME/.bash_it
export BASH_IT=$HOME/.bash_it
# Lock and Load a custom theme file
# location /.bash_it/themes/
export BASH_THEME='bobby'
export BASH_IT_THEME='bobby'
# Your place for hosting Git repos. I use this for private repos.
export GIT_HOSTING='git@git.domain.com'
@ -40,4 +40,4 @@ export TODO="t"
#export VCPROMPT_EXECUTABLE=~/.vcprompt/bin/vcprompt
# Load Bash It
source $BASH/bash_it.sh
source $BASH_IT/bash_it.sh

View File

@ -6,15 +6,16 @@ SCM_THEME_PROMPT_CLEAN=' ✓'
SCM_THEME_PROMPT_PREFIX=' |'
SCM_THEME_PROMPT_SUFFIX='|'
GIT='git'
SCM_GIT='git'
SCM_GIT_CHAR='±'
HG='hg'
SCM_HG='hg'
SCM_HG_CHAR='☿'
SVN='svn'
SCM_SVN='svn'
SCM_SVN_CHAR='⑆'
SCM_NONE='NONE'
SCM_NONE_CHAR='○'
RVM_THEME_PROMPT_PREFIX=' |'
@ -24,76 +25,85 @@ VIRTUALENV_THEME_PROMPT_PREFIX=' |'
VIRTUALENV_THEME_PROMPT_SUFFIX='|'
function scm {
if [[ -d .git ]]; then SCM=$GIT
elif [[ -n "$(git symbolic-ref HEAD 2> /dev/null)" ]]; then SCM=$GIT
elif [[ -d .hg ]]; then SCM=$HG
elif [[ -n "$(hg root 2> /dev/null)" ]]; then SCM=$HG
elif [[ -d .svn ]]; then SCM=$SVN
else SCM='NONE'
if [[ -d .git ]]; then SCM=$SCM_GIT
elif [[ -n "$(git symbolic-ref HEAD 2> /dev/null)" ]]; then SCM=$SCM_GIT
elif [[ -d .hg ]]; then SCM=$SCM_HG
elif [[ -n "$(hg root 2> /dev/null)" ]]; then SCM=$SCM_HG
elif [[ -d .svn ]]; then SCM=$SCM_SVN
else SCM=$SCM_NONE
fi
}
function scm_char {
function scm_prompt_char {
if [[ -z $SCM ]]; then scm; fi
[[ $SCM == $GIT ]] && echo $SCM_GIT_CHAR && return
[[ $SCM == $HG ]] && echo $SCM_HG_CHAR && return
[[ $SCM == $SVN ]] && echo $SCM_SVN_CHAR && return
echo $SCM_NONE_CHAR
if [[ $SCM == $SCM_GIT ]]; then SCM_CHAR=$SCM_GIT_CHAR
elif [[ $SCM == $SCM_HG ]]; then SCM_CHAR=$SCM_HG_CHAR
elif [[ $SCM == $SCM_SVN ]]; then SCM_CHAR=$SCM_SVN_CHAR
else SCM_CHAR=$SCM_NONE_CHAR
fi
}
function scm_prompt_vars {
scm
scm_prompt_char
SCM_DIRTY=0
SCM_STATE=''
[[ $SCM == $SCM_GIT ]] && git_prompt_vars && return
[[ $SCM == $SCM_HG ]] && hg_prompt_vars && return
[[ $SCM == $SCM_SVN ]] && svn_prompt_vars && return
}
function scm_prompt_info {
if [[ -z $SCM ]]; then scm; fi
[[ $SCM == $GIT ]] && git_prompt_info && return
[[ $SCM == $HG ]] && hg_prompt_info && return
[[ $SCM == $SVN ]] && svn_prompt_info && return
scm
scm_prompt_char
SCM_DIRTY=0
SCM_STATE=''
[[ $SCM == $SCM_GIT ]] && git_prompt_info && return
[[ $SCM == $SCM_HG ]] && hg_prompt_info && return
[[ $SCM == $SCM_SVN ]] && svn_prompt_info && return
}
# Stolen from Steve Losh
# left in for backwards-compatibility
function prompt_char {
char=$(scm_char);
echo -e "$char"
}
function git_prompt_info {
function git_prompt_vars {
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}
SCM_DIRTY=1
SCM_STATE=${GIT_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
else
state=${GIT_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
SCM_DIRTY=0
SCM_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
echo -e "$prefix${ref#refs/heads/}$state$suffix"
SCM_PREFIX=${GIT_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
SCM_SUFFIX=${GIT_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
local ref=$(git symbolic-ref HEAD 2> /dev/null)
SCM_BRANCH=${ref#refs/heads/}
SCM_CHANGE=$(git rev-parse HEAD 2>/dev/null)
}
function svn_prompt_info {
function svn_prompt_vars {
if [[ -n $(svn status 2> /dev/null) ]]; then
state=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
SCM_DIRTY=1
SCM_STATE=${SVN_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
else
state=${SVN_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
SCM_DIRTY=0
SCM_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
[[ -z $ref ]] && return
echo -e "$prefix$ref$state$suffix"
SCM_PREFIX=${SVN_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
SCM_SUFFIX=${SVN_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
SCM_BRANCH=$(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
SCM_CHANGE=$(svn info 2> /dev/null | sed -ne 's#^Revision: ##p' )
}
function hg_prompt_info() {
function hg_prompt_vars {
if [[ -n $(hg status 2> /dev/null) ]]; then
state=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
SCM_DIRTY=1
SCM_STATE=${HG_THEME_PROMPT_DIRTY:-$SCM_THEME_PROMPT_DIRTY}
else
state=${HG_THEME_PROMPT_CLEAN:-$SCM_THEME_PROMPT_CLEAN}
SCM_DIRTY=0
SCM_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 -e "$prefix$branch:${changeset#*:}$state$suffix"
SCM_PREFIX=${HG_THEME_PROMPT_PREFIX:-$SCM_THEME_PROMPT_PREFIX}
SCM_SUFFIX=${HG_THEME_PROMPT_SUFFIX:-$SCM_THEME_PROMPT_SUFFIX}
SCM_BRANCH=$(hg summary 2> /dev/null | grep branch | awk '{print $2}')
SCM_CHANGE=$(hg summary 2> /dev/null | grep parent | awk '{print $2}')
}
function rvm_version_prompt {
@ -109,3 +119,28 @@ function virtualenv_prompt {
echo -e "$VIRTUALENV_THEME_PROMPT_PREFIX$virtualenv$VIRTUALENV_THEME_PROMPT_SUFFIX"
fi
}
# backwards-compatibility
function git_prompt_info {
git_prompt_vars
echo -e "$SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_SUFFIX"
}
function svn_prompt_info {
svn_prompt_vars
echo -e "$SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_SUFFIX"
}
function hg_prompt_info() {
hg_prompt_vars
echo -e "$SCM_PREFIX$SCM_BRANCH:${SCM_CHANGE#*:}$SCM_STATE$SCM_SUFFIX"
}
function scm_char {
scm_prompt_char
echo -e "$SCM_CHAR"
}
function prompt_char {
scm_char
}