annotate unixSoft/bin/apply-patchbomb @ 325:64e73453e43f

xmonad: Pull apart custom layout into something readable This change doesn't affect any behavior, but it does document the custom layout by naming function parameters. Hopefully, this will make things easier to fix the next time the XMonad developers break us.
author Lucas Bergman <lucas@bergmans.us>
date Tue, 11 Mar 2014 12:49:05 -0500
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())