summaryrefslogtreecommitdiff
path: root/vcs
diff options
context:
space:
mode:
authorTslil Clingman <hiato1@gmail.com>2013-08-09 14:03:45 +0200
committerTslil Clingman <hiato1@gmail.com>2013-08-09 14:03:45 +0200
commitf2b32d25177be465c7209072eb93ae14fc16dfa3 (patch)
tree52e8d412518d5b3d4c70c068b7ef11dde6cac03d /vcs
parent3bd9f307d5cd0128ea4fa37aaecaadac5629521c (diff)
The vcs script I use for my PS1 and some minor changes
Diffstat (limited to 'vcs')
-rwxr-xr-xvcs47
1 files changed, 47 insertions, 0 deletions
diff --git a/vcs b/vcs
new file mode 100755
index 0000000..aee37cf
--- /dev/null
+++ b/vcs
@@ -0,0 +1,47 @@
+#!/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 4-)
+ 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}"