diff --git a/t.sh b/t.sh index f6b00c7..76908a5 100755 --- a/t.sh +++ b/t.sh @@ -55,7 +55,9 @@ function usage() { local titleformat format local usage_var desc_var format="%22s %-40s %s\n" - echo "usage: $0 COMMAND [commandopts]" + echo "usage: $0 COMMAND [OPTIONS] [commandopts]" + echo + echo " -s Auto-sync with server when complete." echo printf "$format" "COMMAND" "DESCRIPTION" "SYNONYMS" for x in $valid_modes; do @@ -1053,6 +1055,40 @@ function getchildren() { return 0 } + +function tasksync() { + local res upcount downcount noun + + if [[ $1 == "-a" ]]; then + noun="Auto-sync" + else + noun="Sync" + fi + res=$(${VDIRSYNCER} sync 2>&1) + rv=$? + + if [[ $rv -eq 0 ]]; then + upcount=$(echo "$res" | grep -v ^Sync | grep -c ${VDS_REMOTE}) + downcount=$(echo "$res" | grep -v ^Sync | grep -c ${VDS_LOCAL}) + + [[ $upcount -eq 1 ]] && upess="" || upess="s" + [[ $downcount -eq 1 ]] && downess="" || downess="s" + + if [[ $upcount -eq 0 && $downcount -eq 0 ]]; then + action "$noun complete - no changes." + elif [[ $upcount -eq 0 ]]; then + action "$noun complete - $downcount change$downess pulled." + elif [[ $downcount -eq 0 ]]; then + action "$noun complete - $upcount change$upess pushed." + else + action "$noun complete - $upcount change$upess pushed, $downcount change$downess pulled." + fi + else + error "$noun failed. Output:" + echo "$res" | sed -e 's/^/ /' + fi +} + # Should be in config file: #basedir=/Users/rpearce/scripts/t #dir=$basedir/docs @@ -1140,9 +1176,10 @@ addcmd "view" "view " "Show detailed info for given task" "v|view|info|vcal" DEBUG=0 TESTMODE=0 +AUTOSYNC=0 -ARGS="hdt" +ARGS="hdst" while getopts "$ARGS" i; do case "$i" in h) @@ -1152,6 +1189,9 @@ while getopts "$ARGS" i; do d) DEBUG=1 ;; + s) + AUTOSYNC=1 + ;; t) DEBUG=1 TESTMODE=1 @@ -1183,29 +1223,7 @@ fi # Commands that don't need tasks loaded if [[ $mode == "sync" ]]; then - res=$(${VDIRSYNCER} sync 2>&1) - rv=$? - - if [[ $rv -eq 0 ]]; then - upcount=$(echo "$res" | grep -v ^Sync | grep -c ${VDS_REMOTE}) - downcount=$(echo "$res" | grep -v ^Sync | grep -c ${VDS_LOCAL}) - - [[ $upcount -eq 1 ]] && upess="" || upess="s" - [[ $downcount -eq 1 ]] && downess="" || downess="s" - - if [[ $upcount -eq 0 && $downcount -eq 0 ]]; then - action "Sync complete - no changes." - elif [[ $upcount -eq 0 ]]; then - action "Sync complete - $downcount change$downess pulled." - elif [[ $downcount -eq 0 ]]; then - action "Sync complete - $upcount change$upess pushed." - else - action "Sync complete - $upcount change$upess pushed, $downcount change$downess pulled." - fi - else - error "sync failed. Output:" - echo "$res" | sed -e 's/^/ /' - fi + tasksync exit $rv fi @@ -1391,3 +1409,8 @@ else fi fi fi + + +if [[ $AUTOSYNC -eq 1 && $mode != "sync" ]]; then + tasksync -a +fi