|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | + |
| 4 | +# get current status of git repo |
| 5 | +function _parse_git_dirty { |
| 6 | + status=`git status 2>&1 | tee` |
| 7 | + dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"` |
| 8 | + untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"` |
| 9 | + ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"` |
| 10 | + newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"` |
| 11 | + renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"` |
| 12 | + deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"` |
| 13 | + bits='' |
| 14 | + if [ "${renamed}" == "0" ]; then |
| 15 | + bits=">${bits}" |
| 16 | + fi |
| 17 | + if [ "${ahead}" == "0" ]; then |
| 18 | + bits="*${bits}" |
| 19 | + fi |
| 20 | + if [ "${newfile}" == "0" ]; then |
| 21 | + bits="+${bits}" |
| 22 | + fi |
| 23 | + if [ "${untracked}" == "0" ]; then |
| 24 | + bits="?${bits}" |
| 25 | + fi |
| 26 | + if [ "${deleted}" == "0" ]; then |
| 27 | + bits="x${bits}" |
| 28 | + fi |
| 29 | + if [ "${dirty}" == "0" ]; then |
| 30 | + bits="!${bits}" |
| 31 | + fi |
| 32 | + if [ ! "${bits}" == "" ]; then |
| 33 | + echo " ${bits}" |
| 34 | + else |
| 35 | + echo "" |
| 36 | + fi |
| 37 | +} |
| 38 | + |
| 39 | + |
| 40 | +function _ps1_nonzero_return() { |
| 41 | + RETVAL=$? |
| 42 | + echo "$RETVAL" |
| 43 | +} |
| 44 | + |
| 45 | +KUBE_PS1_SYMBOL_IMG=$'\xE2\x98\xB8 ' |
| 46 | +function _ps1_kubectl() { |
| 47 | + KUBECTL_CURRENT_CONTENT=$(kubectl config view | grep current-context | sed -e "s|current-context: ||g" | tr -cd '[:alnum:]._-') |
| 48 | +} |
| 49 | + |
| 50 | + |
| 51 | +# get current branch in git repo |
| 52 | +function _parse_git_branch() { |
| 53 | + BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` |
| 54 | + if [ ! "${BRANCH}" == "" ] |
| 55 | + then |
| 56 | + STAT=`_parse_git_dirty` |
| 57 | + echo "[${BRANCH}${STAT}]" |
| 58 | + else |
| 59 | + echo "" |
| 60 | + fi |
| 61 | +} |
| 62 | + |
| 63 | +test $(id -u) -eq 0 && UCOLOR=31m || UCOLOR=32m |
| 64 | + |
| 65 | + |
| 66 | +PS1="\[\e[0;33m\][\[\e[${UCOLOR}\]\u\[\e[m\]\[\e[0;33m\]@\[\e[m\]\[\e[0;35m\]\H\[\e[m\]\[\e[0;33m\]][\[\e[m\]\[\e[32m\]\w\[\e[m\]\[\e[0;33m\]][\[\e[m\]\[\e[32m\]? \`_ps1_nonzero_return\`\[\e[m\]\[\e[0;33m\]]" |
| 67 | +PS1="$PS1[\[\e[m\]\[\e[0;35m\]${KUBE_PS1_SYMBOL_IMG}\`_ps1_kubectl\`\[\e[0;33m\]]\`_parse_git_branch\`" |
| 68 | +export PS1="$PS1 \[\e[m\] \r\n→ " |
0 commit comments