Show More
@@ -77,6 +77,17 b' def help(ui, cmd=None):' | |||
|
77 | 77 | try: |
|
78 | 78 | i = find(cmd) |
|
79 | 79 | ui.write("%s\n\n" % i[2]) |
|
80 | ||
|
81 | if i[1]: | |
|
82 | for s, l, d, c in i[1]: | |
|
83 | opt=' ' | |
|
84 | if s: opt = opt + '-' + s + ' ' | |
|
85 | if l: opt = opt + '--' + l + ' ' | |
|
86 | if d: opt = opt + '(' + str(d) + ')' | |
|
87 | ui.write(opt, "\n") | |
|
88 | if c: ui.write(' %s\n' % c) | |
|
89 | ui.write("\n") | |
|
90 | ||
|
80 | 91 | ui.write(i[0].__doc__, "\n") |
|
81 | 92 | except UnknownCommand: |
|
82 | 93 | ui.warn("hg: unknown command %s\n" % cmd) |
@@ -603,7 +614,12 b' def dispatch(args):' | |||
|
603 | 614 | signal.signal(signal.SIGTERM, catchterm) |
|
604 | 615 | |
|
605 | 616 | cmdoptions = {} |
|
606 | args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2]) | |
|
617 | try: | |
|
618 | args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2]) | |
|
619 | except fancyopts.getopt.GetoptError, inst: | |
|
620 | u.warn("hg %s: %s\n" % (cmd, inst)) | |
|
621 | help(u, cmd) | |
|
622 | sys.exit(-1) | |
|
607 | 623 | |
|
608 | 624 | if cmd not in norepo.split(): |
|
609 | 625 | repo = hg.repository(ui = u) |
@@ -627,7 +643,8 b' def dispatch(args):' | |||
|
627 | 643 | tb = traceback.extract_tb(sys.exc_info()[2]) |
|
628 | 644 | if len(tb) > 2: # no |
|
629 | 645 | raise |
|
630 | raise | |
|
646 | u.debug(inst, "\n") | |
|
631 | 647 | u.warn("%s: invalid arguments\n" % i[0].__name__) |
|
632 | u.warn("syntax: %s\n" % i[2]) | |
|
648 | help(u, cmd) | |
|
633 | 649 | sys.exit(-1) |
|
650 |
@@ -6,48 +6,25 b' def fancyopts(args, options, state, synt' | |||
|
6 | 6 | map={} |
|
7 | 7 | dt={} |
|
8 | 8 | |
|
9 | def help(state, opt, arg, options=options, syntax=syntax): | |
|
10 | print "Usage: ", syntax | |
|
11 | ||
|
12 | for s, l, d, c in options: | |
|
13 | opt=' ' | |
|
14 | if s: opt = opt + '-' + s + ' ' | |
|
15 | if l: opt = opt + '--' + l + ' ' | |
|
16 | if d: opt = opt + '(' + str(d) + ')' | |
|
17 | print opt | |
|
18 | if c: print ' %s' % c | |
|
19 | sys.exit(0) | |
|
20 | ||
|
21 | if len(args) < minlen: | |
|
22 | help(state, None, args) | |
|
23 | ||
|
24 | options=[('h', 'help', help, 'Show usage info')] + options | |
|
25 | ||
|
26 | 9 | for s, l, d, c in options: |
|
27 | 10 | map['-'+s] = map['--'+l]=l |
|
28 | 11 | state[l] = d |
|
29 | 12 | dt[l] = type(d) |
|
30 |
if not d is None and not |
|
|
13 | if not d is None and not callable(d): s, l=s+':', l+'=' | |
|
31 | 14 | if s: short = short + s |
|
32 | 15 | if l: long.append(l) |
|
33 | 16 | |
|
34 | 17 | if os.environ.has_key("HG_OPTS"): |
|
35 | 18 | args = os.environ["HG_OPTS"].split() + args |
|
36 | 19 | |
|
37 | try: | |
|
38 | opts, args = getopt.getopt(args, short, long) | |
|
39 | except getopt.GetoptError: | |
|
40 | help(state, None, args) | |
|
41 | sys.exit(-1) | |
|
20 | opts, args = getopt.getopt(args, short, long) | |
|
42 | 21 | |
|
43 | 22 | for opt, arg in opts: |
|
44 |
if dt[map[opt]] is type( |
|
|
23 | if dt[map[opt]] is type(fancyopts): state[map[opt]](state,map[opt],arg) | |
|
45 | 24 | elif dt[map[opt]] is type(1): state[map[opt]] = int(arg) |
|
46 | 25 | elif dt[map[opt]] is type(''): state[map[opt]] = arg |
|
47 | 26 | elif dt[map[opt]] is type([]): state[map[opt]].append(arg) |
|
48 | 27 | elif dt[map[opt]] is type(None): state[map[opt]] = 1 |
|
49 | 28 | |
|
50 | del state["help"] | |
|
51 | ||
|
52 | 29 | return args |
|
53 | 30 |
General Comments 0
You need to be logged in to leave comments.
Login now