X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/bd97a33d177754d4260fd21c5f6751a486eb3eed..24ef9dd69c3557178e445192e1b9de2766f640f5:/bin/resubmit

diff --git a/bin/resubmit b/bin/resubmit
index 2e4896d..c51244b 100755
--- a/bin/resubmit
+++ b/bin/resubmit
@@ -1,17 +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
-FORMAIL="/usr/bin/formail -I'X-Resubmitted: $(date -R)'"
+# execute the date -R only during the eval, not immediately
+FILTER='/usr/bin/formail -I"X-Resubmitted: $(date -R)"'
 
-if [ -z "${1:-}" ]; then
-  $FORMAIL | exec $PROCMAIL
+if [ -z "${files:-}" ] && [ $list -eq 0 ]; then
+  eval $FILTER | exec $PROCMAIL
 else
-  if [ ! -f "$1" ]; then
-    echo "E: no such file: $1" >&2
-    exit 1
-  fi
-  eval $FORMAIL < "$1" | $PROCMAIL && rm -f "$1"
+  for f in $files; do
+    eval $FILTER < "$f" | $PROCMAIL && rm -f "$f"
+  done
 fi
 
 exit 0