123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- #!/bin/bash
-
-
-
-
-
-
- __bashum__lastrv() {
- local rvfile
- local lastrv
- local do_rm
- rvfile="$RV_TMP/$$.lastrv"
- lastrv="$(cat "$rvfile")"
- do_rm=false
- test "$1" == "-r" && do_rm=true
- if [ "0$lastrv" -gt 0 ];
- then
- echo "!$lastrv!"
- else
- echo ""
- fi
- $do_rm && rm -f "$rvfile"
- }
-
- __bashum__save_rv() {
- local rvfile="$RV_TMP/$$.lastrv"
- [ -w "${rvfile%/*}" ] && echo "$1" > "$rvfile"
- }
-
- __bashum__task_context() {
- $BASHUM_TASK_CTX || return 0
- local ctx
- type -t task >/dev/null || return 1
- ctx=$(task _get rc.context)
- test -n "$ctx" || return
- echo -n "|$ctx"
- }
-
-
- __bashum__mkps1() {
-
-
- test -n "$SSH_CONNECTION" \
- && echo -n "$(__bashum__mkps1user)"
- echo -n "$lwhite@"
- echo -n "$(__bashum__mkps1host)"
- echo -n "$yellow"
- echo -n '$(__bashum__task_context)'
- echo -n "$normal"
- echo -n "$lwhite:"
- echo -n "$lblue\w$normal"
- echo -n "$green"
- echo -n '$(__git_ps1 "(%s)")'
- echo -n "$normal"
- echo -n "$lred"
- echo -n '$(__bashum__lastrv -r)'
- echo -n "$normal"
- echo '$ '
- }
-
-
- __bashum__mkps2() {
- echo "$lwhite·$blue>$yellow>$white>$normal "
- }
-
-
- PS1=$(__bashum__mkps1)
- PS2=$(__bashum__mkps2)
-
-
- __bashum__set_title() {
-
-
-
-
-
- case "$BASH_COMMAND" in
- *"\033]"0*)
-
-
-
-
- ;;
- "")
- echo -ne "\033]0;$(__bashum__mkicon) "
- echo -n "$(__bashum__lastrv)$(__bashum__mkhostid)$(__bashum__wdir normal)\$"
- echo -ne "\007"
- ;;
- *)
- echo -ne "\033]0;$(__bashum__mkicon) "
- echo -n "${BASH_COMMAND} ($(__bashum__mkhostid)$(__bashum__wdir normal))"
- echo -ne "\007"
- ;;
- esac
- }
-
- __bashum__wdir() {
-
-
-
- local mode=${1:-normal}
- case $mode:$PWD in
- shrinky:*) __bashum__shrinkypath "$PWD" ;;
- normal:*) echo "${PWD/$HOME/\~}" ;;
- short:$HOME) echo "~" ;;
- short:$HOME/??????????) echo "${PWD/$HOME/\~}" ;;
- short:$HOME/*/*) echo "…${PWD##*/}" ;;
- short:$HOME/*) echo "${PWD/$HOME/\~}" ;;
- short:*) echo "$PWD" ;;
- esac
- }
-
- __bashum__shrinkypath() {
-
-
-
- local path=$1
- case $path in
- $HOME) echo "~"; return ;;
- $HOME/*) echo -n "~"; __bashum__shrink_relpath "${path#$HOME/}" ;;
- *) echo "$path"; return ;;
- esac
- }
-
- __bashum__shrink_relpath() {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- local path=$1
- local elems
- local frst
- local last
- local elnum
- test "${#path}" -le 7 && echo -n "$path" && return 0
- elems=(${path//// }); elnum=${#elems[@]}
- frst=${elems[0]}
- last=${elems[$((elnum-1))]}
- case $elnum in
- 0) true ;;
- 1) echo -n "$path"; return ;;
- 2) __bashum__shrink_elem "$frst"; echo -n "/$last" ;;
- *) __bashum__shrink_elem "$frst"; echo -n "/…/$last" ;;
- esac
- }
-
- __bashum__shrink_elem() {
-
-
-
- local buff=$1
- local word
- local words
- local head=true
- words=(${buff//./ }); wnum=${#words[@]}
- test "$wnum" -eq 0 && echo -n "$buff" && return 0
- for word in "${words[@]}"; do
- $head || { echo -n .; head=false; }
- case $word in
- ?|??) echo -n "$word" ;;
- *) echo -n "${word:0:1}…" ;;
- esac
- done
- }
-
-
- __bashum__mkpc() {
-
-
-
- echo -n '__bashum__save_rv $?;'
- case "$TERM" in
- xterm*|rxvt*|screen*)
- echo -n 'echo -ne "\033]0;'
- echo -n "$(__bashum__mkicon) "
- echo -n '$(__bashum__lastrv)'
- echo -n "$(__bashum__mkhostid)"
- echo -n '$(__bashum__wdir shrinky)'
- echo -n '\$'
- echo -n '\007"'
- ;;
- esac
- }
-
- __bashum__mkicon() {
- case "$SSH_CONNECTION" in
- "") echo ;;
- *) echo ;;
- esac
- }
-
- __bashum__mkhostid() {
- test -n "$SSH_CONNECTION" || return
- echo "${HOSTNAME%%.*}:"
- }
-
- __bashum__setup_traps() {
- case "$TERM" in
- xterm*|rxvt*|screen*) trap __bashum__set_title DEBUG ;;
- esac
- }
-
- __bashum__setup_traps
-
- PROMPT_COMMAND=$(__bashum__mkpc)
-
- $BASHUM_BMO_NAG && bmo nag
|