Mercurial > dotfiles
annotate unixSoft/bin/apply-patchbomb @ 377:117e3c11d953
zprofile: introduce zprofile use
El Capitan (OS X 10.11) introduces a system-level /etc/zprofile which
uses a path_helper thing to mangle $PATH. Unfortunately, the way
path_helper works, it forces /usr/local/bin and /usr/bin to the
*start* of the PATH variable, which means that any PATH mutations I
want have to run after /etc/zprofile calls path_helper. As such, move
my path insertions into .zprofile{,-machine} rather than
.zshenv{,-machine} so that I can still ensure my path entries are at
the start of PATH rather than the end. This works because:
> Commands are then read from $ZDOTDIR/.zshenv. If the shell is a
> login shell, commands are read from /etc/zprofile and then
> $ZDOTDIR/.zprofile. Then, if the shell is interactive, commands
> are read from /etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the
> shell is a login shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.
This means that non-login shells no longer pick up my custom PATH
entries, but as I only use OS X as a desktop OS that seems like a
workable tradeoff for now.
| author | Augie Fackler <raf@durin42.com> |
|---|---|
| date | Sun, 31 Jan 2016 20:46:29 -0500 |
| parents | 4b661cede8ad |
| children | 0b8457903012 |
| 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() |
|
333
4b661cede8ad
apply-patchbomb: create obsolete markers, keep partial applications
Augie Fackler <raf@durin42.com>
parents:
227
diff
changeset
|
22 p = subprocess.Popen(['hg', 'import', '--partial', '--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: |
|
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()) |
