diff --git a/bash/bash_profile b/bash/bash_profile index bc95c7b..c90a624 100644 --- a/bash/bash_profile +++ b/bash/bash_profile @@ -1,17 +1,69 @@ WHITE="\[\033[00m\]" BLACK="\[\033[01;30m\]" RED="\[\033[0;31m\]" +LIGHT_RED="\[\033[1;31m\]" GREEN="\[\033[0;32m\]" +LIGHT_GREEN="\[\033[1;32m\]" YELLOW="\[\033[0;33m\]" BLUE="\[\033[0;34m\]" PURPLE="\[\033[0;35m\]" CYAN="\[\033[0;36m\]" +LIGHT_GRAY="\[\033[0;37m\]" function parse_git_branch { - ref=$(git-symbolic-ref HEAD 2> /dev/null) || return - echo "("${ref#refs/heads/}")" + git rev-parse --git-dir > /dev/null 2>&1 + if [ $? -eq 0 ]; then + git_status="$(git status 2> /dev/null)" + branch_pattern="^# On branch ([^${IFS}]*)" + detached_branch_pattern="# Not currently on any branch" + remote_pattern="# Your branch is (.*) of" + diverge_pattern="# Your branch and (.*) have diverged" + untracked_pattern="# Untracked files:" + new_pattern="new file:" + not_staged_pattern="Changes not staged for commit" + + #files not staged for commit + if [[ ${git_status}} =~ ${not_staged_pattern} ]]; then + state="✔" + fi + # add an else if or two here if you want to get more specific + # show if we're ahead or behind HEAD + if [[ ${git_status} =~ ${remote_pattern} ]]; then + if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then + remote="↑" + else + remote="↓" + fi + fi + #new files + if [[ ${git_status} =~ ${new_pattern} ]]; then + remote="+" + fi + #untracked files + if [[ ${git_status} =~ ${untracked_pattern} ]]; then + remote="✖" + fi + #diverged branch + if [[ ${git_status} =~ ${diverge_pattern} ]]; then + remote="↕" + fi + #branch name + if [[ ${git_status} =~ ${branch_pattern} ]]; then + branch=${BASH_REMATCH[1]} + #detached branch + elif [[ ${git_status} =~ ${detached_branch_pattern} ]]; then + branch="NO BRANCH" + fi + + echo " ( ${branch} ${state}${remote})" + fi + return } +if [ -f `brew --prefix`/etc/bash_completion ]; then + . `brew --prefix`/etc/bash_completion +fi + export TERM="xterm-color" alias ls="ls -G" -export PS1="$PURPLE\u@\h$WHITE:$BLUE\w $YELLOW\$(parse_git_branch)$WHITE\$ " +export PS1="$PURPLE\u@\h$WHITE:$BLUE\w$YELLOW\$(parse_git_branch)$WHITE\$ "