X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/9280c99a6009727d5ec277cebe7334cd7da47417..d895f1697aab438f533a0a479107c9cfebe96e3e:/isync/sync-mail diff --git a/isync/sync-mail b/isync/sync-mail new file mode 100755 index 0000000..a3b8a7a --- /dev/null +++ b/isync/sync-mail @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +dir="$(dirname "${BASH_SOURCE[0]}")" +config=$dir/config + +### pre-sync {{{ + +### }}} + +### sync {{{ +mbsync -c "$config" -a +errno=$? + +if [[ $errno -ne 0 ]]; then + echo "mbsync failed, ignoring post-sync commands." >&2 + exit $errno +fi +### }}} + +### post-sync {{{ +yt_src_mb=youtube-orig +yt_dst_mb=youtube +yt_parser=$dir/parse-mail.py +maildir=$(sed -nr 's/^Path\s*(.*)$/\1/p' $config) + + +if [[ -z $maildir ]]; then + echo "Could not extract 'Path' from 'MaildirStore' in '$config'" >&2 + exit 1 +fi + +# expand tilde +maildir=${maildir/#~/$HOME} + +shopt -s extglob +shopt -s nullglob +for mail in "$maildir"/$yt_src_mb/new/* ; do + mangled_mail=${mail/$yt_src_mb/$yt_dst_mb} + # remove UID for mbsync to regenerate it + mangled_mail="${mangled_mail/,U=+([0-9])}" + + echo -n "Parsing new message '$(basename "$mail")'..." + $yt_parser <"$mail" >"$mangled_mail" + + if [[ $? -eq 0 ]]; then + echo " Success." + else + echo " Failure! Copying message as is." + cp "$mail" "$mangled_mail" + fi + + # sync {a,m}time + touch --reference "$mail" "$mangled_mail" + mv "$mail" "${mail/new/cur}S" +done +# resync new yt_dst_mb +mbsync -c "$config" gmail-$yt_src_mb gmail-$yt_dst_mb + +### }}} +