# HG changeset patch # User Augie Fackler # Date 1264875660 21600 # Node ID b5d71972aa72b825a439c33b7d9b95297cd61480 # Parent efa2bfc73d2da79646679974fb57740f394b45d5 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app. diff --git a/unixSoft/bin/apply-patchbomb b/unixSoft/bin/apply-patchbomb new file mode 100755 --- /dev/null +++ b/unixSoft/bin/apply-patchbomb @@ -0,0 +1,29 @@ +#!/usr/bin/python +# shebang for system python explicitly so we're sure to have pyobjc and +# the scripting bridge. +"""apply-patchbomb: apply selected messages in Mail.app to an hg repo in pwd. + +This uses the scripting bridge to talk to Mail and subprocess to pass the +patch to Mercurial on stdin. +""" + + +import ScriptingBridge +import subprocess + +def main(): + mail = ScriptingBridge.SBApplication.applicationWithBundleIdentifier_( + 'com.apple.Mail') + messages = list(sorted(mail.selection(), + cmp=lambda x,y: cmp(x.subject(), y.subject()))) + for m in messages: + print 'Applying', m.subject() + p = subprocess.Popen(['hg', 'import', '-'], stdin=subprocess.PIPE) + p.stdin.write(m.source()) + p.stdin.close() + if p.wait() != 0: + print 'hg import failed, bailing' + break + +if __name__ == '__main__': + main()