view unixSoft/bin/hgimp @ 521:6cc5a0550281

tools: port hg utility scripts to python 3
author Augie Fackler <raf@durin42.com>
date Thu, 14 Jul 2022 14:09:04 -0400
parents 957632211aa3
children
line wrap: on
line source

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

_MAP = {
    'hg': '~/Programming/hg/crew',
    'hglib': '~/Programming/hg/python-hglib',
    'hgsubversion': '~/Programming/hg/hgsubversion',
    'hg-git': '~/Programming/hg/hg-git',
    'topics': '~/Programming/hg/topic',
    }


def main(argv):
    p = argparse.ArgumentParser('import patches')
    p.add_argument('repo', type=str, nargs=1,
                   help='repo name to apply patches to')
    p.add_argument('--partial', action='store_true',
                   help='Commit partially-applied patches.')
    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]]
    importargs = ['hg', '-R', repo, 'import', '--obsolete']
    if args.partial:
        importargs.append('--partial')
    importargs.append('-')
    hg = subprocess.Popen(importargs, stdin=subprocess.PIPE)
    hg.stdin.write(sys.stdin.buffer.read())
    hg.stdin.close()
    hg.wait()
    sys.exit(hg.returncode)


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