export SSH_AUTH_SOCK="${HOME}/.ssh/ssh_auth_sock" completion_path='/usr/share/bash-completion/bash_completion' [[ -r "${completion_path}" ]] && . "${completion_path}" # grc colorize() { local cmds cmd cmds=(\ cc configure cvs df diff dig gcc gmake id ip last lsof make mount \ mtr netstat ping ping6 ps tcpdump traceroute traceroute6 \ ) for cmd in ${cmds[@]}; do alias ${cmd}="command grc -es --colour=auto ${cmd}" done } if [[ -x $(type -P grc) ]]; then colorize unset -f colorize fi # because fuck you thats' why fuck() { echo 'no, fuck you'; } # some cool git stuff gdiff() { /usr/bin/git diff --color "$@"; } gdf() { local fancydiff='/usr/bin/diff-so-fancy' local githighlight='/usr/share/git/diff-highlight/diff-highlight' if [[ -x ${fancydiff} ]]; then gdiff "$@" | ${fancydiff} | less --tabs=4 -RSFX elif [[ -x ${githighlight} ]]; then gdiff "$@" | ${githighlight} | less --tabs=4 -RSFX else gdiff "$@" fi } is_git_repo() { local curr_dir="$PWD" while [[ -n "${curr_dir}" ]]; do if [[ -r "${curr_dir}/.git/HEAD" ]]; then return 0 else curr_dir="${curr_dir%/*}" fi done return 1 } git_prompt() { prompt_command is_git_repo || return 0 local raw_status="$(git status --porcelain -bu 2>/dev/null)" local branch_info full_status IFS= local git_status='' local staged_count=0 local unstaged_count=0 local untracked_count=0 local unmerged_count=0 while read line; do [[ "${line:0:2}" == '##' ]] && branch_info="${line:3}" [[ "${line:0:2}" == '??' ]] && (( untracked_count++ )) [[ "${line:0:2}" =~ .[MD] ]] && (( unstaged_count++ )) [[ "${line:0:2}" =~ [MDARC]. ]] && (( staged_count++ )) [[ "${line:0:2}" =~ (U[ADU]|A[AU]|D[DU]) ]] && (( unmerged_count++ )) done <<< "${raw_status}" (( unstaged_count )) && git_status+="${ppurple}~${unstaged_count}" (( staged_count )) && git_status+="${pblue}+${staged_count}" (( untracked_count )) && git_status+="${pred}-${untracked_count}" (( unmerged_count )) && git_status+="${porange}*${unmerged_count}" [[ -z "${git_status}" ]] && git_status="${pgreen}ok" full_status="{ ${pgray3}${branch_info}${preset} | ${git_status}${preset} }" if [[ -n "${OLD_PROMPT}" ]]; then PS1="${ps_line1} ${full_status}\n${ps_line2}" else echo ${full_status} fi } gitmode() { if [[ -n "${OLD_PROMPT}" ]]; then PROMPT_COMMAND=${OLD_PROMPT} unset OLD_PROMPT else OLD_PROMPT=${PROMPT_COMMAND} PROMPT_COMMAND=git_prompt fi } gitmode