Re: [PATCH 5/6] stg mail: add basic support for git send-email
- From
Karl Wiberg <kha@treskal.com>
- Date
- Nov 29, 2009, 21:54 UTC
- Message-ID
- <b8197bcb0911291354m674d3698m929a1d542a59ed9f@mail.gmail.com>
- In-Reply-To
- <20091128195037.949.63611.stgit@bob.kio>
On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang <achiang@hp.com> wrote:
Show 16 quoted lines
> + # XXX: yuck, there's gotta be a more pythonic way. Ideally we'd like
> + # to use the git_opts dictionary as our mapping between stg mail and
> + # git send-email; extract k, v pairs from git_opts, and use those
> + # to iterate across options somehow.
> + git_opts = { 'to': '--to=', 'cc': '--cc=', 'bcc': '--bcc=' }
> + if options.to:
> + for a in options.to:
> + cmd.append("--to=%s" % a)
> + if options.cc:
> + for a in options.cc:
> + cmd.append("--cc=%s" % a)
> + if options.bcc:
> + for a in options.bcc:
> + cmd.append("--bcc=%s" % a)
> + if not options.auto:
> + cmd.append("--suppress-cc=body")Like this?
for x in ['to', 'cc', 'bcc']:
if getattr(options, x):
cmd.extend('--%s=%s' % (x, a) for a in getattr(options, x))Show 12 quoted lines
> + (fd, path) = mkstemp() > + os.write(fd, msg.as_string(options.mbox)) > + os.close(fd) > + > + try: > + cmd.append(path) > + call(cmd) > + except Exception, err: > + os.unlink(path) > + raise CmdException, str(err) > + > + os.unlink(path)
To avoid having to remember to call unlink in all paths, you can write
try:
try:
cmd.append(path)
call(cmd)
except Exception, e:
raise CmdException(str(e))
finally:
os.unlink(path)(The combined try...except...finally statement didn't appear until python 2.5, but we'd like to stay compatible with 2.4.)
-- Karl Wiberg, kha@treskal.com subrabbit.wordpress.com www.treskal.com/kalle