1
0
Fork 0
vdotfiles/bashplugins

78 lines
2.2 KiB
Text
Raw Normal View History

2017-03-01 19:14:32 +02:00
vscripts="${HOME}/vscripts"
[[ -d ${vscripts} && ${PATH} != *${vscripts}* ]] && export PATH=${PATH}:${vscripts}
completion_path='/usr/share/bash-completion/bash_completion'
[[ -r "${completion_path}" ]] && . "${completion_path}"
# because fuck you thats' why
2017-01-18 18:50:31 +02:00
fuck() { echo 'no, fuck you'; }
2017-03-01 19:14:32 +02:00
# some cool git stuff
2017-01-24 18:48:45 +02:00
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
2017-01-24 18:48:45 +02:00
elif [[ -x ${githighlight} ]]; then
gdiff "$@" | ${githighlight} | less --tabs=4 -RSFX
2017-01-24 18:48:45 +02:00
else
gdiff "$@"
fi
}
2017-03-01 19:14:32 +02:00
git_prompt()
2016-12-13 01:08:47 +02:00
{
local staged_count unstaged_count untracked_count unmerged_count
local git_status branch_info full_status IFS=
2017-03-01 19:14:32 +02:00
prompt_command
2017-03-01 19:14:32 +02:00
if ! raw_status="$(git status --porcelain -bu 2>/dev/null)"; then
return
fi
2017-03-01 19:14:32 +02:00
git_status=''
staged_count=0
unstaged_count=0
untracked_count=0
unmerged_count=0
2016-12-13 01:08:47 +02:00
2017-03-01 19:14:32 +02:00
while read line; do
[[ "${line:0:2}" == '##' ]] && branch_info="${line:3}"
2017-03-01 19:14:32 +02:00
[[ "${line:0:2}" =~ .[MD] ]] && (( unstaged_count++ ))
[[ "${line:0:2}" =~ [MDARC]. ]] && (( staged_count++ ))
[[ "${line:0:2}" == '??' ]] && (( untracked_count++ ))
[[ "${line:0:2}" =~ (U[ADU]|A[AU]|D[DU]) ]] && (( unmerged_count++ ))
done <<< "${raw_status}"
(( $unstaged_count > 0 )) && git_status+="${ppurple}~${unstaged_count}"
(( $staged_count > 0 )) && git_status+="${pblue}+${staged_count}"
(( $untracked_count > 0 )) && git_status+="${pred}-${untracked_count}"
(( $unmerged_count > 0 )) && git_status+="${porange}*${unmerged_count}"
[[ -z "${git_status}" ]] && git_status="${pgreen}ok"
full_status="{ ${pgray3}${branch_info}${preset} | ${git_status}${preset} }"
2017-03-01 19:14:32 +02:00
if [[ -n "${OLD_PROMPT}" ]]; then
PS1="${ps_line1} ${full_status}\n${ps_line2}"
else
echo ${full_status}
fi
2016-12-13 01:08:47 +02:00
}
2017-03-01 19:14:32 +02:00
gitmode()
2016-12-13 01:08:47 +02:00
{
2017-03-01 19:14:32 +02:00
if [[ -n "${OLD_PROMPT}" ]]; then
PROMPT_COMMAND=${OLD_PROMPT}
unset OLD_PROMPT
else
OLD_PROMPT=${PROMPT_COMMAND}
PROMPT_COMMAND=git_prompt
2016-12-13 01:08:47 +02:00
fi
}
gitmode