#!/usr/bin/env bash errno=$1 mbsync_args=$* if [[ $errno -ne 0 ]]; then echo "mbsync failed, ignoring post-sync commands." >&2 exit fi if [[ "$mbsync_args" != "gmail" ]]; then # only run for gmail account exit fi yt_src_mb=youtube-orig yt_dst_mb=youtube yt_parser=$dir/parse-mail.py maildirs=( $(sed -nr 's/^Path\s*(.*)$/\1/p' $config) ) if [[ -z $maildirs ]]; then echo "Could not extract 'Path' from 'MaildirStore' in '$config'" >&2 exit 1 fi shopt -s extglob shopt -s nullglob for maildir in "${maildirs[@]}"; do # expand tilde maildir=${maildir/#~/$HOME} if [[ -d "$maildir/$yt_src_mb" ]]; then echo "No mailbox at '$maildir/$yt_src_mb'" continue fi 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 done