git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Karl Wiberg <kha@treskal.com>
To: Alex Chiang <achiang@hp.com>
Cc: catalin.marinas@gmail.com, git@vger.kernel.org
Subject: Re: [PATCH 5/6] stg mail: add basic support for git send-email
Date: Sun, 29 Nov 2009 22:54:25 +0100	[thread overview]
Message-ID: <b8197bcb0911291354m674d3698m929a1d542a59ed9f@mail.gmail.com> (raw)
In-Reply-To: <20091128195037.949.63611.stgit@bob.kio>

On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang <achiang@hp.com> wrote:

> +    # 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))

> +    (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

  reply	other threads:[~2009-11-29 21:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-28 19:50 [StGit RFC PATCH 0/6] add support for git send-email Alex Chiang
2009-11-28 19:50 ` [PATCH 1/6] stg mail: Refactor __send_message and friends Alex Chiang
2009-11-29  9:13   ` Karl Wiberg
2009-11-30 23:58     ` Alex Chiang
2009-11-28 19:50 ` [PATCH 2/6] stg mail: reorder __build_[message|cover] parameters Alex Chiang
2009-11-28 19:50 ` [PATCH 3/6] stg mail: make __send_message do more Alex Chiang
2009-11-29 21:23   ` Karl Wiberg
2009-11-30 23:59     ` Alex Chiang
2009-12-01  7:26       ` Karl Wiberg
2009-11-28 19:50 ` [PATCH 4/6] stg mail: factor out __update_header Alex Chiang
2009-11-28 19:50 ` [PATCH 5/6] stg mail: add basic support for git send-email Alex Chiang
2009-11-29 21:54   ` Karl Wiberg [this message]
2009-12-01  0:00     ` Alex Chiang
2009-12-01  7:33       ` Karl Wiberg
2009-11-28 19:50 ` [PATCH 6/6] stg mail: don't parse To/Cc/Bcc in --git mode Alex Chiang
2009-11-29 22:05 ` [StGit RFC PATCH 0/6] add support for git send-email Karl Wiberg
2009-12-01  0:02   ` Alex Chiang
2009-12-01  7:38     ` Karl Wiberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b8197bcb0911291354m674d3698m929a1d542a59ed9f@mail.gmail.com \
    --to=kha@treskal.com \
    --cc=achiang@hp.com \
    --cc=catalin.marinas@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).