view unixSoft/bin/hgimp @ 357:c7a9cd793e37

patchpipe: handle base64-encoded message bodies It looks like the new version of mailman on selenic now base64s message bodies, so detect that and unpack the base64'd body.
author Augie Fackler <raf@durin42.com>
date Mon, 22 Dec 2014 17:12:53 -0500
parents 70e76c545606
children 2ac43cd7bbf7
line wrap: on
line source

#!/usr/bin/env python
import argparse
import os
import subprocess
import sys

_MAP = {
    'hg': '~/Programming/hg/crew',
    'hgsubversion': '~/Programming/hg/hgsubversion',
    'hg-git': '~/Programming/hg/hg-git',
    }


def main(argv):
    p = argparse.ArgumentParser('import patches')
    p.add_argument('repo', type=str, nargs=1,
                   help='repo name to apply patches to')
    args = p.parse_args(argv[1:])
    name, = args.repo
    if name in _MAP:
        repo = _MAP[name]
    else:
        c = []
        for n in _MAP:
            if n.startswith(name):
                c.append(n)
        if not c:
            print 'abort: no repo named %s' % name
            sys.exit(1)
        elif len(c) != 1:
            print 'abort: ambiguous repo name %s matches %s' % (
                name, ', '.join(c))
            sys.exit(1)
        repo = _MAP[c[0]]
    hg = subprocess.Popen(['hg', '-R', repo, 'import', '--obsolete', '-'],
                          stdin=subprocess.PIPE)
    hg.stdin.write(sys.stdin.read())
    hg.stdin.close()
    hg.wait()
    sys.exit(hg.returncode)


if __name__ == '__main__':
    main(argv=sys.argv)