Skip to content

Instantly share code, notes, and snippets.

@todesking
Created January 25, 2013 13:45
Show Gist options
  • Save todesking/4634579 to your computer and use it in GitHub Desktop.
Save todesking/4634579 to your computer and use it in GitHub Desktop.
my .bash_profile
[ -s ~/.rvm/scripts/rvm ] && source ~/.rvm/scripts/rvm
source ~/scripts/vendor/git-completion/git-completion.bash
source ~/scripts/vendor/git-completion/git-prompt.sh
if [ "Darwin" = "$(uname)" ]; then
alias sed=gsed
export EDITOR=vim
fi
# PS1 {{{
# Show errorcode {{{
function __show_errorcode_color() {
local err=$?
if [ $err != 0 ]; then
echo -en "\033[31m"
else
echo -en "\033[32m"
fi
exit $err
}
function __show_errorcode_symbol() {
local err=$?
if [ $err != 0 ]; then
echo -en "✘ $err"
else
echo -en "✓"
fi
exit $err
}
# }}}
function __show_jobs() {
JOBS=$(jobs|sed 's/ \+/\t/g'|cut -f1,3|tr \\t :|tr \\n ','|sed 's/,$//'|sed 's/,/, /g')
if [ "$JOBS" != "" ]; then
echo " ($JOBS)"
fi
}
function __show_warning_message() {
local err=$?
if [ "$PS1_WARNING" != "" ]; then
echo -en "[${PS1_WARNING}] "
fi
exit $err
}
# ORIGINAL: https://gist.github.com/538522
# Show SVN status {{{
# If you want to see svn modifications:
# export SVN_SHOWDIRTYSTATE=1
#
# Put this in your PS1 like this:
# PS1='\u@\h:\W\[\033[01;33m\]$(__git_svn_ps1)\[\033[00m\]$ '
# Git/Subversion prompt function
__svn_ps1() {
local s=
if [[ -d ".svn" ]] ; then
local svn_info=$(svn info)
local b=`__svn_branch "$svn_info"`
local r=`__svn_rev "$svn_info"`
s=" ($b@$r)"
fi
echo -n "$s"
}
# Outputs the current trunk, branch, or tag
__svn_branch() {
local svn_info=$1
[ -z "$svn_info" ] && svn_info=$(svn info)
local url=$(echo "$svn_info" | awk '/URL:/ {print $2}')
if [[ $url =~ trunk ]]; then
echo trunk
elif [[ $url =~ /branches/ ]]; then
echo $url | sed -e 's#^.*/\(branches/.*\)\(/.*\)\?$#\1#'
elif [[ $url =~ /tags/ ]]; then
echo $url | sed -e 's#^.*/\(tags/.*\)/.*$#\1#'
fi
}
# Outputs the current revision
__svn_rev() {
local svn_info=$1
[ -z "$svn_info" ] && svn_info=$(svn info)
local r=$(echo "$svn_info" | awk '/Revision:/ {print $2}')
local svnst flag
svnst=$(svn status | grep --line-buffered '^\s*[?ACDMR?!]' | head -n 1)
[ -z "$svnst" ] || flag=*
r=$r$flag
echo $r
}
# }}}
export GIT_PS1_SHOWUPSTREAM=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_DESCRIBE_STYLE=branch
function __my_git_ps1() {
local out=$(__git_ps1)
if ( echo $out | egrep '\$' > /dev/null ) ; then
local stashes=$(git stash list | wc -l | ruby -e "puts('\$'*ARGF.read.to_i)")
out=$(echo $out | sed "s/\\$/${stashes}/")
fi
echo $out
}
export PS1='
\[\033[31m\]\[\033[\a\]$(__show_warning_message)\[$(__show_errorcode_color)\]$(__show_errorcode_symbol) \[\033[33m\]\w$(__my_git_ps1)$(__svn_ps1)\[\033[0m\]$(__show_jobs)
\[\033[31m\]$(__show_warning_message)\[\033[32m\][$(date +"%m-%d %H:%M:%S")]\[\033[0m\] § '
# }}}
export MYSQL_PS1="(\u@\h) [\d] > "
# Alias {{{
alias g=git
alias ls='ls -F'
alias la='ls -lag'
alias ll='ls -l'
alias lh='ls -lh'
alias G=egrep
alias L=less
alias F=find
alias be='bundle exec'
alias r='bundle exec rails'
alias c=cd
alias s='svn'
# }}}
complete -d cd
complete -o bashdefault -o default -o nospace -F _git g
HISTSIZE=50000
HISTFILESIZE=50000
shopt -s histappend
shopt -s checkwinsize
shopt -s no_empty_cmd_completion
if [ -x /usr/local/bin/brew ]; then
export PATH=/usr/local/sbin:/usr/local/bin:$PATH
fi
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
PATH=$HOME/bin:$HOME/local/bin:$PATH
export IGNOREEOF=10
export EDITOR=`which vim`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment