Mercurial > dotfiles
annotate unixSoft/bin/apply-patchbomb @ 307:e37b00236907
zshrc: work around my shell function that turns on utf8 in screen
The zsh built in which was getting confused by the function, and
always claimed screen was installed. I'm finally running into machines
with tmux but not screen, so I noticed.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sat, 19 Jan 2013 19:29:58 -0600 |
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()) |