#!/usr/bin/env sh check() { echo "$2" | grep -q "$1"; }; VCS_STR="" VCS_INF="" VCS_NEW="" VCS_MOD="" VCS_REC="" SPC="" if [[ $1 == "--zsh-colour" ]]; then nstr="%F{red}●%f" mstr="%F{11}●%f" rstr="%F{28}●%f" cFST="%F{green}" cSND="%F{blue}" cEND="%f" else nstr="@" mstr="±" rstr="↑" cFST="" cSND="" cEND="" fi if [[ -d ".git" || -d "../.git" || -d "../../.git" ]]; then outp=$(git status) VCS_STR="*" VCS_INF=$(echo "$outp" | head -n 1 | cut -d' ' -f 3-) check "^Untracked files:$" "$outp" [[ $? = 0 ]] && VCS_NEW=$nstr check "^Changes not staged for commit:$" "$outp" [[ $? = 0 ]] && VCS_MOD=$mstr check "^Changes to be committed:$" "$outp" [[ $? = 0 ]] && VCS_REC=$rstr else if [[ -d "_darcs" || -d "../_darcs" || -d "../../_darcs" ]]; then fls=$(darcs show files) VCS_STR="+" VCS_INF=$(darcs show repo | grep Default | cut -d : -f 3-) for f in ./*; do if [[ -f $f ]]; then echo "$fls" | grep -q $f else true fi; if [[ ! $? = 0 ]]; then VCS_NEW=$nstr; break; fi; done; news=$(darcs what)$ check "^No changes" "$news" [[ $? = 0 ]] || VCS_REC=$rstr fi; fi; [ -n "$VCS_NEW$VCS_MOD$VCS_REC" ] && SPC=" " [ -n "$VCS_STR" ] && echo "$cFST$VCS_STR$cEND{$cSND$VCS_INF$cEND$SPC$VCS_NEW$VCS_MOD$VCS_REC}"