Mercurial > dotfiles
annotate unixSoft/bin/apply-patchbomb @ 525:b0fa9e7cadac
shell: speed things up by golfing out grep
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Mon, 14 Nov 2022 10:46:11 -0500 |
parents | 6cc5a0550281 |
children |
rev | line source |
---|---|
521
6cc5a0550281
tools: port hg utility scripts to python 3
Augie Fackler <raf@durin42.com>
parents:
379
diff
changeset
|
1 #!/usr/bin/env python |
185
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: |
521
6cc5a0550281
tools: port hg utility scripts to python 3
Augie Fackler <raf@durin42.com>
parents:
379
diff
changeset
|
21 print('Applying', m.subject()) |
379
0b8457903012
apply-patchbomb: discard --partial, which doesn't fit my workflow
Augie Fackler <raf@durin42.com>
parents:
333
diff
changeset
|
22 p = subprocess.Popen(['hg', 'import', '--obsolete', '-'], stdin=subprocess.PIPE) |
185
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: |
521
6cc5a0550281
tools: port hg utility scripts to python 3
Augie Fackler <raf@durin42.com>
parents:
379
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()) |