Autocommit of file /home/julien/.dotfiles/vim/.vim/bundle/vimtodo/misc/autocommit...
[dotfiles/vim.git] / .vim / bundle / vimtodo / misc / autocommit.sh
1 #!/bin/bash
2 # Autocommit script - pushes your todo file to a git repository and pulls any
3 # updates.
4 #
5 # Add it to cron to run every minute (or 5 minutes if desired)
6 #
7
8 MYDIR=`dirname $0`
9
10 [[ -f $MYDIR/autocommit.cfg ]] && . $MYDIR/autocommit.cfg
11
12 # Debugging functions
13 if [[ "$1" == "-x" ]]; then
14     DEBUG=yes
15 else
16     DEBUG=no
17 fi
18
19 debugmsg() {
20     if [[ "$DEBUG" == "yes" ]]; then
21         echo "$@"
22     fi
23     echo "$@" >> $LOGFILE
24 }
25
26 CURRTIME=`date +%s`
27 COMMIT=no
28 PINGCMD="ping -q -n -W 1 -c 1 $PINGHOST"
29 NETWORKUP=no
30
31 cd $MYDIR
32 debugmsg "==================================================================="
33 debugmsg "Running $0 - `date`"
34 debugmsg "==================================================================="
35
36 debugmsg "In: $PWD"
37 debugmsg "Currtime: $CURRTIME"
38
39 debugmsg "Files:"
40 for f in $FILES; do
41     MODTIME=`stat -c %Y $f`
42     debugmsg -n "    $f - $MODTIME - "
43     # If the file wasn't modified in the last $SECONDS seconds, then add it to
44     # be committed
45     if [[ "($CURRTIME - $SECONDS)" -gt "$MODTIME" ]]; then
46         debugmsg "adding"
47         $GIT add $f > /dev/null
48     else
49         debugmsg "not adding: recently modified"
50     fi
51 done
52
53 if TESTNET=yes; then
54     debugmsg -n "Testing for network connectivity - "
55     if $PINGCMD > /dev/null 2>&1; then
56         debugmsg "UP"
57         NETWORKUP=yes
58     else
59         debugmsg "DOWN"
60         NETWORKUP=no
61     fi
62 else
63     debugmsg "Not testing for network connectivity - assuming it is up"
64     NETWORKUP=yes
65 fi
66
67 if $GIT status > /dev/null; then
68     debugmsg "We have changed files - committing"
69     $GIT commit -m "$MESSAGE" >> $LOGFILE
70 fi
71
72 if [[ "$PUSH" == "yes" ]]; then
73     debugmsg -n "Try to push - "
74     if [[ "$NETWORKUP" == "yes" ]]; then
75         if ! $GIT diff --quiet $BRANCH..$REMOTE/$BRANCH; then
76             debugmsg "Pushing"
77             $GIT push --porcelain $REMOTE $BRANCH >> $LOGFILE 2>&1
78         else
79             debugmsg "Nothing to push"
80         fi
81     else
82         debugmsg "Network down"
83     fi
84 fi
85
86 if [[ "$PULL" == "yes" ]]; then
87     debugmsg -n "Try to pull - "
88     if [[ "$NETWORKUP" == "yes" ]]; then
89         debugmsg "pulling"
90         $GIT pull $REMOTE $BRANCH >> $LOGFILE 2>&1
91     else
92         debugmsg "Network down"
93     fi
94 fi