add push option for syncing

This commit is contained in:
Rob Pearce 2022-03-29 18:05:55 +11:00
parent fef7d5adfc
commit dfe11f6d03
1 changed files with 45 additions and 9 deletions

54
t.sh
View File

@ -4,7 +4,6 @@
trap "exit 1" TERM
export MYPID=$$
. ${HOME}/code/bashtools/bashtools.sh
if [[ -z $HAVE_BASHTOOLS ]]; then
echo "ERROR: bashtools not installed download from https://git.nethack.net/rob/bashtools" >/dev/stderr
@ -1474,14 +1473,32 @@ EOF
}
function tasksync() {
local res upcount downcount noun
local res upcount downcount noun="Sync" mode="sync"
if [[ $1 == "-a" ]]; then
noun="Auto-sync"
else
noun="Sync"
while [[ $# -ge 1 ]]; do
if [[ $1 == "-a" ]]; then
noun="Auto-sync"
elif [[ $1 == "push" ]]; then
mode="push"
noun="Push"
elif [[ $1 == "pull" ]]; then
mode="pull"
noun="Pull"
fi
shift
done
notify "${noun}ing tasks"
# adjust conflict resolution
## remove existing setting
sed -i '/^conflict/ s/^/#/' $vdirsyncconfig
## add new one
if [[ $mode == "push" ]]; then
sed -i '/conflict.*a wins/ s/^#\+//' $vdirsyncconfig
elif [[ $mode == "pull" ]]; then
sed -i '/conflict.*b wins/ s/^#\+//' $vdirsyncconfig
fi
notify "Syncing tasks"
res=$(${VDIRSYNCER} sync 2>&1)
rv=$?
[[ $rv -eq 0 ]] && ok || fail
@ -1503,9 +1520,24 @@ function tasksync() {
inform "$noun complete - $upcount change$upess pushed, $downcount change$downess pulled."
fi
else
error "$noun failed. Output:"
echo "$res" | sed -e 's/^/ /'
errmsg="$noun failed."
if [[ $mode == "sync" ]]; then
errmsg="${errmsg} Try ^bt push^p or ^bt pull^p."
fi
error "$errmsg"
if [[ $mode != "sync" ]]; then
cecho -s "$RED" "^bDetails:^p"
cecho -s "$RED" "$res" | sed -e 's/^/ /'
echo
cecho -s "$RED" "^bConflict settings:^p"
errmsg=$(grep "conflict" $vdirsyncconfig 2>&1)
cecho -s "$YELLOW" "$errmsg" | sed -e 's/^/ /'
fi
fi
## remove conflict setting again
sed -i '/^conflict/ s/^/#/' $vdirsyncconfig
}
function getcals() { # countvar arrayvar
@ -1634,6 +1666,7 @@ addcmd "note" "note <id> <notes>" "Change notes for given task" "note|desc|descr
addcmd "tag" "tag <id> <tag>" "Add a tag to the given task" "tag|t"
addcmd "untag" "untag <id> <tag>" "Remove a tag from the given task" "untag|ut"
addcmd "sync" "sync" "Sync tasks using vdirsyncer" "sync"
addcmd "push" "push" "Push all tasks to server" "push"
addcmd "view" "view <id>" "Show detailed info for given task" "v|view|info|vcal" PASSIVE
addcmd "showcals" "showcals" "List available calendars" "cals|showcals|cls" PASSIVE
addcmd "setcal" "setcal" "Set the default calendar." "setcal|sc"
@ -1745,6 +1778,9 @@ fi
if [[ $mode == "sync" ]]; then
tasksync
exit $rv
elif [[ $mode == "push" ]]; then
tasksync push
exit $rv
fi
notify "Processing"