Re: [PATCH 5/6] stg mail: add basic support for git send-email

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Nov 28, 2009 at 8:50 PM, Alex Chiang <achiang@xxxxxx> 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@xxxxxxxxxxx
   subrabbit.wordpress.com
   www.treskal.com/kalle
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]