X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/b950ed9b38f03bb658650d6e6e52a122ab5c1fc8..285170b907e4c1f4bc5c48480fd3c7e2d340bbe1:/bin/resubmit

diff --git a/bin/resubmit b/bin/resubmit
index 8405e77..c51244b 100755
--- a/bin/resubmit
+++ b/bin/resubmit
@@ -1,12 +1,60 @@
 #!/bin/sh
 set -eu
 
+ME="${0##*/}"
+
+about()
+{
+  echo "$ME -- resubmit messages to the mail filter"
+  echo "Copyright © martin f. krafft <madduck@madduck.net>"
+  echo "Released under the terms of the Artistic Licence 2.0"
+}
+
+usage()
+{
+  echo "Usage: $ME [options] <Maildir> [<Maildir> ...]"
+  echo
+  echo "Valid options are:"
+  cat <<-_eof | column -s\& -t
+	-V|--version & show version information.
+	-h|--help & show this output.
+	-l|--list & process the argument list (even if empty), never stdin
+	_eof
+}
+
+SHORTOPTS=Vhl
+LONGOPTS=version,help,list
+
+list=0
+files=
+
+for opt in $(getopt -n $ME -o $SHORTOPTS -l $LONGOPTS -u -- "$@"); do
+  case "$opt" in
+    -V|--version) about; exit 0;;
+    -h|--help) about; echo; usage; exit 0;;
+    -l|--list) list=1;;
+    --) :;;
+    *)
+      if [ -f "$opt" ] && [ -r "$opt" ]; then
+        files="$files $opt"
+      else
+        echo "E: unknown argument: $opt" >&2
+        exit 1
+      fi
+      ;;
+  esac
+done
+
 PROCMAIL=$HOME/.etc/mailfilter/procmail/procmailrc
+# execute the date -R only during the eval, not immediately
+FILTER='/usr/bin/formail -I"X-Resubmitted: $(date -R)"'
 
-if [ -z "${1:-}" ]; then
-  cat | exec $PROCMAIL
+if [ -z "${files:-}" ] && [ $list -eq 0 ]; then
+  eval $FILTER | exec $PROCMAIL
 else
-  $PROCMAIL < "$1" && rm -f "$1"
+  for f in $files; do
+    eval $FILTER < "$f" | $PROCMAIL && rm -f "$f"
+  done
 fi
 
 exit 0