--- /dev/null
+#!/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
#!/usr/bin/env bash
+mbsync_args="$*"
+
dir="$(dirname "${BASH_SOURCE[0]}")"
config=$dir/config
-### pre-sync {{{
-
-### }}}
+for hook in $(find $dir/pre-sync.d -type f -executable); do
+ "$hook" $errno $mbsync_args
+done
-### sync {{{
-mbsync -c "$config" -a
+mbsync -c "$config" $mbsync_args
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"
+for hook in $(find $dir/post-sync.d -type f -executable); do
+ "$hook" $errno $mbsync_args
done
-# resync new yt_dst_mb
-mbsync -c "$config" gmail-$yt_src_mb gmail-$yt_dst_mb
-
-### }}}
+exit $errno