mercurial/fancyopts.py
author Chris Mason <mason@suse.com>
Thu, 20 Apr 2006 13:08:16 -0400
changeset 2101 c6c019fd5db1
parent 1541 bf4e7ef08741
child 3673 eb0b4a2d70a9
permissions -rw-r--r--
Make bundlerepo use proper index format for revlogng bundlerepo just appends index entries from the bundle onto the index for the current repo. This patch makes sure it appends the correct format.

import getopt

def fancyopts(args, options, state):
    long = []
    short = ''
    map = {}
    dt = {}

    for s, l, d, c in options:
        pl = l.replace('-', '_')
        map['-'+s] = map['--'+l] = pl
        state[pl] = d
        dt[pl] = type(d)
        if not d is None and not callable(d):
            if s: s += ':'
            if l: l += '='
        if s: short = short + s
        if l: long.append(l)

    opts, args = getopt.getopt(args, short, long)

    for opt, arg in opts:
        if dt[map[opt]] is type(fancyopts): state[map[opt]](state,map[opt],arg)
        elif dt[map[opt]] is type(1): state[map[opt]] = int(arg)
        elif dt[map[opt]] is type(''): state[map[opt]] = arg
        elif dt[map[opt]] is type([]): state[map[opt]].append(arg)
        elif dt[map[opt]] is type(None): state[map[opt]] = 1

    return args