#!/bin/zsh check() { echo $1 | grep -q $2; }; VCS_STR="" VCS_INF="" VCS_NEW="" VCS_MOD="" VCS_REC="" nstr=" %F{red}●%f" mstr=" %F{11}●%f" rstr=" %F{28}●%f" 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 $outp "^Untracked files:$" [[ $? = 0 ]] && VCS_NEW=$nstr check $outp "^Changes not staged for commit:$" [[ $? = 0 ]] && VCS_MOD=$mstr check $outp "^Changes to be committed:$" [[ $? = 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 $news "^No changes" [[ $? = 0 ]] || VCS_REC=$rstr fi; fi; [[ ! "$VCS_STR" = "" ]] && echo "%F{green}$VCS_STR%f{%F{blue}$VCS_INF%f$VCS_REC$VCS_MOD$VCS_NEW}"