+cgmem_which_prompt() {
+ local _cgmem_which
+ _cgmem_which="`cgmem_which 2>/dev/null`"
+ if [ -n "$_cgmem_which" ]; then
+ echo "[$_cgmem_which] "
+ fi
+}
+
short_curdir() {
if [ "$PWD" = / ]; then
echo /
fi
echo "${_short_curdir}"
}
+
+# bash_prompt; adapted from
+# https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
+# https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
+
+prompt_git() {
+ local s=""
+ local branchName=""
+
+ # check if the current directory is in a git repository
+ if git rev-parse --is-inside-work-tree &>/dev/null; then
+
+ # check if the current directory is in .git before running git checks
+ if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == "false" ]; then
+
+ # ensure index is up to date
+ #git update-index --really-refresh -q &>/dev/null
+
+ # check for unstaged changes
+ if [ -n "$(git ls-files --modified)" ]; then
+ s="$s*";
+ fi
+
+ # check for uncommitted changes in the index
+ if ! $(git diff --quiet --ignore-submodules --cached); then
+ s="$s+";
+ fi
+
+ # check for stashed files
+ if $(git rev-parse --verify refs/stash &>/dev/null); then
+ s="$s$";
+ fi
+
+ # check for untracked files
+ if [ -n "$(git ls-files --others --exclude-standard)" ]; then
+ s="$s%";
+ fi
+
+ fi
+
+ # get the short symbolic ref
+ # if HEAD isn't a symbolic ref, get the short SHA
+ # otherwise, just give up
+ branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
+ git rev-parse --short HEAD 2> /dev/null || \
+ printf "(unknown)")"
+
+ up=`git rev-parse --abbrev-ref @{u} 2>/dev/null`
+ if [ -n "$up" -a "$up" != "@{u}" ]; then
+ local left right
+ set -- `git rev-list --count --left-right @{u}...HEAD`
+ left=$1
+ right=$2
+ if [ "$left" -gt 0 ]; then
+ s="$s-$left"
+ fi
+ if [ "$right" -gt 0 ]; then
+ s="$s+$right"
+ fi
+ fi
+
+ [ -n "$s" ] && s=" $s"
+ printf " (%s)" "$branchName$s"
+ fi
+}
+
+#if test -x /usr/bin/git >/dev/null 2>&1; then
+# if [ "`type -t __git_ps1`" != function ]; then
+# git_sh_prompt=`git --exec-path`/git-sh-prompt
+# test -r $git_sh_prompt && . $git_sh_prompt || :
+# fi
+# if [ "`type -t __git_ps1`" = function ]; then
+# GIT_PS1_SHOWDIRTYSTATE=true
+# GIT_PS1_SHOWSTASHSTATE=true
+# GIT_PS1_SHOWUNTRACKEDFILES=true
+# GIT_PS1_SHOWUPSTREAM=verbose
+# fi
+#fi
+
+set_prompts() {
+ OPS1=''
+ local _COMMON_PROMPT='${debian_chroot:+($debian_chroot)}\u@\h:\w'
+ # display the user, host and current working directory
+ # in the terminal title
+ case "$TERM" in
+ *rxvt*|screen*|*term*|vt100)
+ OPS1="\[\033]0;${_COMMON_PROMPT}\007\]" # Set xterm title/icon
+ case "$TERM" in
+ screen*)
+ OPS1="\[\033P\033]0;${_COMMON_PROMPT}\007\033\\\\\]" # Set xterm title/icon under screen/tmux
+ OPS1+="\[\033k${_COMMON_PROMPT}\033\\\\\]" # Set screen/tmux caption
+ ;;
+ esac
+ ;;
+
+ *)
+ OPS1=""
+ ;;
+ esac
+
+ OPS1+='${debian_chroot:+($debian_chroot)}'
+ OPS1+='`cgmem_which_prompt`\u@${HOSTNAME::5}:`short_curdir`'
+ if test -x /usr/bin/git >/dev/null 2>&1; then
+ #if [ "`type -t __git_ps1`" = function ]; then
+ # OPS1+='$(__git_ps1)'
+ #else
+ OPS1+='$(prompt_git)'
+ #fi
+ fi
+ # This is for .screenrc: shelltitle "\$ |$SHELL"
+ #OPS1+='\[\033k\033\\\]'
+ OPS1+=' $SHLVL\$ '
+ export OPS1
+}