2020-09-16 16:49:08 +00:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
# runs mbsync, with pre-hooks and post-hooks
|
|
|
|
# by default, first runs imapfilter
|
|
|
|
# and after indexes with notmuch
|
|
|
|
#
|
|
|
|
# To run without invoking any hooks or retry attempts,
|
|
|
|
# run `checkmail raw`
|
|
|
|
# this will simply invoke a single isync run on all
|
|
|
|
# boxes with the correct config file set.
|
|
|
|
#
|
|
|
|
# for more advanced, per-account/channel hooks, see
|
|
|
|
# https://sourceforge.net/p/isync/feature-requests/8/
|
|
|
|
|
|
|
|
MBSYNC_MAX_TRIES=3
|
2020-09-17 17:49:53 +00:00
|
|
|
MBSYNC_PRE="imapfilter -c /home/marty/.config/imapfilter/config.lua"
|
2020-09-16 16:49:08 +00:00
|
|
|
MBSYNC_POST="notmuch new"
|
|
|
|
|
|
|
|
# fail the routine and optionally send a message why
|
|
|
|
fail() {
|
|
|
|
[ -n "$1" ] && echo "$1"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
checkmail() {
|
|
|
|
mbsync -c "$XDG_CONFIG_HOME/isync/mbsyncrc" -a
|
|
|
|
}
|
|
|
|
|
|
|
|
checkonline() {
|
|
|
|
# Ping 1.1.1.1 to confirm that we are on the internet
|
|
|
|
ping -c 1 "1.1.1.1" >/dev/null 2>/dev/null || fail "checkmail can not access the internet."
|
|
|
|
}
|
|
|
|
|
|
|
|
# Routine start
|
|
|
|
|
|
|
|
# check
|
|
|
|
|
|
|
|
# skip any retries and pre/post hooks, just run mbsync
|
|
|
|
if [ "$1" = "raw" ]; then
|
|
|
|
checkmail
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
2020-09-17 17:49:53 +00:00
|
|
|
main() {
|
|
|
|
$MBSYNC_PRE
|
|
|
|
|
|
|
|
tries=0
|
|
|
|
while true; do
|
|
|
|
if checkmail; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
|
|
|
|
tries=$((tries + 1))
|
|
|
|
if [ $tries -gt $MBSYNC_MAX_TRIES ]; then
|
|
|
|
fail "maximum retries reached without success."
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
unset tries
|
|
|
|
|
|
|
|
$MBSYNC_POST
|
|
|
|
}
|
|
|
|
|
|
|
|
main
|