annotate unixSoft/bin/apply-patchbomb @ 336:ea73ef5dc38c

emacs: avoid weird package.el breakage with newish packages I've been toting around this package.el from 2009 or so, and something in the package format seems to have changed that broke me. Thanks to some related diagnostics by Lucas, I've grabbed the last package.el that worked with emacs 23 and stashed it here. This seems to work, modulo some things (notably js2-mode and smex) now seem to require emacs 24 if you install them using package.el, so this will end up being brittle on my last couple of emacs23 machines.
author Augie Fackler <raf@durin42.com>
date Thu, 29 May 2014 14:30:42 -0400
parents e8170eba88cd
children 4b661cede8ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
185
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
1 #!/usr/bin/python
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
2 # shebang for system python explicitly so we're sure to have pyobjc and
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
3 # the scripting bridge.
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
4 """apply-patchbomb: apply selected messages in Mail.app to an hg repo in pwd.
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
5
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
6 This uses the scripting bridge to talk to Mail and subprocess to pass the
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
7 patch to Mercurial on stdin.
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
8 """
227
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
9 import email
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
10 import subprocess
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
11 import sys
185
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
12
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
13 import ScriptingBridge
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
14
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
15 def main():
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
16 mail = ScriptingBridge.SBApplication.applicationWithBundleIdentifier_(
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
17 'com.apple.Mail')
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
18 messages = list(sorted(mail.selection(),
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
19 cmp=lambda x,y: cmp(x.subject(), y.subject())))
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
20 for m in messages:
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
21 print 'Applying', m.subject()
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
22 p = subprocess.Popen(['hg', 'import', '-'], stdin=subprocess.PIPE)
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
23 p.stdin.write(m.source())
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
24 p.stdin.close()
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
25 if p.wait() != 0:
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
26 print 'hg import failed, bailing'
227
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
27 return 2
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
28 return 0
185
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
29
b5d71972aa72 apply-patchbomb: script to apply patchbomb from selected messages in Mail.app.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
30 if __name__ == '__main__':
227
e8170eba88cd apply-patchbomb: clean up imports and improve exit status
Augie Fackler <durin42@gmail.com>
parents: 185
diff changeset
31 sys.exit(main())