mercurial/fancyopts.py
author Bryan O'Sullivan <bos@serpentine.com>
Sun, 14 Aug 2005 21:33:09 -0800
changeset 907 652507dc9fce
parent 667 31a9aa890016
child 959 0aaeee519c66
child 981 4f81068ed8cd
permissions -rw-r--r--
Modify init command to take an optional directory to set up. If the directory does not exist, it is created. If no directory is given, the current directory is used.

import getopt

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

    for s, l, d, c in options:
        map['-'+s] = map['--'+l]=l
        state[l] = d
        dt[l] = type(d)
        if not d is None and not callable(d): s, l=s+':', 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