summaryrefslogtreecommitdiff
path: root/vcs
blob: 40b215d6d21c7da7f10fc2d0de6c70c365842f9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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 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}"