Mercurial > dotfiles
annotate unixSoft/bin/apply-patchbomb @ 279:0b718e51de16
hgignore: ignore machine-specific .elisp/settings/ files
Just considers anything with local in the name to be machine specific,
which is true for how I use have things configured.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Fri, 27 Apr 2012 16:53:15 -0500 |
parents | e8170eba88cd |
children | 4b661cede8ad |
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()) |