]> rtime.felk.cvut.cz Git - sojka/duhome.git/blob - duhome
Update changelog for 20180727b release
[sojka/duhome.git] / duhome
1 #!/bin/sh
2
3 set -e
4
5 DATA=/var/lib/duhome
6
7 case "$1" in
8     init)
9         mkdir -p $DATA
10         cd $DATA
11         git init
12         ;;
13     save)
14         cd $DATA
15         if [ -n "$(git ls-files)" ]; then
16             git rm --force --quiet '*' # Remove old data - perhaps, some homes were removed
17         fi
18         for i in /home/*; do
19             du -shx $i | cut -f1 > ${i#/home/};
20             git add ${i#/home/}
21         done
22         ;;
23     commit)
24         cd $DATA
25         shift
26         GIT_AUTHOR_NAME="$0" GIT_AUTHOR_EMAIL="$USER@$(hostname -f)" \
27             git commit --quiet -m 'Automatic commit' "$@" > /dev/null || :
28         ;;
29     status)
30         cd $DATA
31         git ls-files --with-tree=HEAD | while read f; do
32             printf "%-8s\t%s\n" "$f" "$(git show "HEAD:$f")"
33         done | sort -h -k2
34         ;;
35     log)
36         cd $DATA
37         dir=$2
38         if ! [ "$dir" ]; then echo "Missing directory name" >&2; exit 1; fi
39         if ! [ -f "$dir" ]; then echo "No information about $dir in $DATA" >&2; exit 1; fi
40         git log --format='%H %ci' -- $dir | while read commit date; do
41             echo $date $(git show $commit:$dir)
42         done
43         ;;
44     help|"")
45         cat <<EOF
46 Usage: $0 <command> [ <options> ]
47
48 Commands:
49 - init
50 - save
51 - commit [ <git commit arguments> ]
52 - status
53 - log <directory>
54 EOF
55         ;;
56 esac