From 2ccfaae0ea4ce8ab691f1b1a0e8481e9b43dbe1c Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Fri, 3 May 2019 21:10:08 -0700 Subject: new scripts: maildir-import-patch(1), notmuch-import-patch(1) Signed-off-by: Sean Whitton --- maildir-import-patch | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 maildir-import-patch (limited to 'maildir-import-patch') diff --git a/maildir-import-patch b/maildir-import-patch new file mode 100755 index 0000000..a17c6cb --- /dev/null +++ b/maildir-import-patch @@ -0,0 +1,56 @@ +#!/usr/bin/python3 + +# maildir-import-patch -- import a git patch series into a maildir + +# Copyright (C) 2019 Sean Whitton +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import mailbox +import shutil +import subprocess +import tempfile + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + +us = os.path.basename(sys.argv[0]) + +if len(sys.argv) < 2: + eprint(us + ": usage: " + us + " MAILDIR [git-format-patch(1) args]") + sys.exit(1) + +if not shutil.which("git"): + eprint(us + ": this script requires git to be installed") + sys.exit(1) + +dest_path = sys.argv[1] +dest = mailbox.Maildir(dest_path) + +cmd = [ + "git", "format-patch", + "--thread=shallow", "--no-cc", "--no-to", + "--stdout", +] +user_args = sys.argv[2:] + +with tempfile.NamedTemporaryFile() as fp: + subprocess.run(cmd + user_args, stdout=fp) + source = mailbox.mbox(fp.name) + dest.lock() + for message in source: + dest.add(message) + dest.close() -- cgit v1.2.3