mercurial/fancyopts.py
author Maxim Dounin <mdounin@mdounin.ru>
Sat, 27 Oct 2007 16:27:55 +0400
changeset 5483 0c43f87baba3
parent 5145 88803a69b24a
permissions -rw-r--r--
Fix file-changed-to-dir and dir-to-file commits (issue660). Allow adding to dirstate files that clash with previously existing but marked for removal. Protect from reintroducing clashes by revert. This change doesn't address related issues with update. Current workaround is to do "clean" update by manually removing conflicting files/dirs from working directory.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
667
31a9aa890016 A number of minor fixes to problems that pychecker found.
mark.williamson@cl.cam.ac.uk
parents: 608
diff changeset
     1
import getopt
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     2
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 560
diff changeset
     3
def fancyopts(args, options, state):
1541
bf4e7ef08741 fixed some stuff pychecker shows, marked unclear/wrong stuff with XXX
twaldmann@thinkmo.de
parents: 1056
diff changeset
     4
    long = []
bf4e7ef08741 fixed some stuff pychecker shows, marked unclear/wrong stuff with XXX
twaldmann@thinkmo.de
parents: 1056
diff changeset
     5
    short = ''
bf4e7ef08741 fixed some stuff pychecker shows, marked unclear/wrong stuff with XXX
twaldmann@thinkmo.de
parents: 1056
diff changeset
     6
    map = {}
bf4e7ef08741 fixed some stuff pychecker shows, marked unclear/wrong stuff with XXX
twaldmann@thinkmo.de
parents: 1056
diff changeset
     7
    dt = {}
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     8
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
     9
    for s, l, d, c in options:
1056
34be48b4ca85 Map long option names containing dashes to ones containing underscores.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    10
        pl = l.replace('-', '_')
34be48b4ca85 Map long option names containing dashes to ones containing underscores.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    11
        map['-'+s] = map['--'+l] = pl
5145
88803a69b24a fancyopts: Copy list arguments in command table before modifying.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3749
diff changeset
    12
        if isinstance(d, list):
88803a69b24a fancyopts: Copy list arguments in command table before modifying.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3749
diff changeset
    13
            state[pl] = d[:]
88803a69b24a fancyopts: Copy list arguments in command table before modifying.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3749
diff changeset
    14
        else:
88803a69b24a fancyopts: Copy list arguments in command table before modifying.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3749
diff changeset
    15
            state[pl] = d
1056
34be48b4ca85 Map long option names containing dashes to ones containing underscores.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    16
        dt[pl] = type(d)
3749
f9567a7fa3b3 additional fixes for issue436
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3742
diff changeset
    17
        if (d is not None and d is not True and d is not False and
f9567a7fa3b3 additional fixes for issue436
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3742
diff changeset
    18
            not callable(d)):
959
0aaeee519c66 Fix option parsing bug for empty short options
mpm@selenic.com
parents: 667
diff changeset
    19
            if s: s += ':'
0aaeee519c66 Fix option parsing bug for empty short options
mpm@selenic.com
parents: 667
diff changeset
    20
            if l: l += '='
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    21
        if s: short = short + s
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    22
        if l: long.append(l)
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    23
293
11d64332a1cb hg help improvements
mpm@selenic.com
parents: 209
diff changeset
    24
    opts, args = getopt.getopt(args, short, long)
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    25
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    26
    for opt, arg in opts:
3673
eb0b4a2d70a9 white space and line break cleanups
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1541
diff changeset
    27
        if dt[map[opt]] is type(fancyopts): state[map[opt]](state, map[opt], arg)
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    28
        elif dt[map[opt]] is type(1): state[map[opt]] = int(arg)
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    29
        elif dt[map[opt]] is type(''): state[map[opt]] = arg
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    30
        elif dt[map[opt]] is type([]): state[map[opt]].append(arg)
3742
86c1d1d35593 Fix argument handling for hg -v pull -v x (issue 436)
Matt Mackall <mpm@selenic.com>
parents: 3673
diff changeset
    31
        elif dt[map[opt]] is type(None): state[map[opt]] = True
3749
f9567a7fa3b3 additional fixes for issue436
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3742
diff changeset
    32
        elif dt[map[opt]] is type(False): state[map[opt]] = True
209
63af1db35611 Beginning of new command parsing interface
mpm@selenic.com
parents: 164
diff changeset
    33
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    34
    return args
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
    35