diff --git a/.bashrc b/.bashrc index 606780d..9a7af37 100644 --- a/.bashrc +++ b/.bashrc @@ -4,6 +4,53 @@ [[ $- != *i* ]] && return +# get current branch in git repo +function parse_git_branch() { + BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` + if [ ! "${BRANCH}" == "" ] + then + STAT=`parse_git_dirty` + echo "[${BRANCH}${STAT}]" + else + echo "" + fi +} + +# get current status of git repo +function parse_git_dirty { + status=`git status 2>&1 | tee` + dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"` + untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"` + ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"` + newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"` + renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"` + deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"` + bits='' + if [ "${renamed}" == "0" ]; then + bits=">${bits}" + fi + if [ "${ahead}" == "0" ]; then + bits="*${bits}" + fi + if [ "${newfile}" == "0" ]; then + bits="+${bits}" + fi + if [ "${untracked}" == "0" ]; then + bits="?${bits}" + fi + if [ "${deleted}" == "0" ]; then + bits="x${bits}" + fi + if [ "${dirty}" == "0" ]; then + bits="!${bits}" + fi + if [ ! "${bits}" == "" ]; then + echo " ${bits}" + else + echo "" + fi +} + colors() { local fgc bgc vals seq0 @@ -72,7 +119,7 @@ if ${use_color} ; then if [[ ${EUID} == 0 ]] ; then PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] ' else - PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] ' + PS1="\[\e[90m\]╭\[\e[m\] \[\e[32m\]\u\[\e[m\]\[\e[90m\]@\[\e[m\]\[\e[32m\]\H\[\e[m\]\[\e[90m\]:\[\e[m\]\[\e[37m\]\[\e[m\]\[\e[90m\]\w\[\e[m\]\[\e[37m\] \[\e[m\]\[\e[32m\]\`parse_git_branch\`\[\e[m\] \[\e[90m\]\\$\[\e[m\] \[\e[37m\]\n\[\e[m\]\[\e[90m\]╰\[\e[m\]\[\e[37m\] \[\e[m\]\[\e[32m\]λ\[\e[m\] " fi alias ls='ls --color=auto'