##// END OF EJS Templates
additional fixes for issue436
Alexis S. L. Carvalho -
r3749:f9567a7f default
parent child Browse files
Show More
@@ -1,30 +1,32 b''
1 import getopt
1 import getopt
2
2
3 def fancyopts(args, options, state):
3 def fancyopts(args, options, state):
4 long = []
4 long = []
5 short = ''
5 short = ''
6 map = {}
6 map = {}
7 dt = {}
7 dt = {}
8
8
9 for s, l, d, c in options:
9 for s, l, d, c in options:
10 pl = l.replace('-', '_')
10 pl = l.replace('-', '_')
11 map['-'+s] = map['--'+l] = pl
11 map['-'+s] = map['--'+l] = pl
12 state[pl] = d
12 state[pl] = d
13 dt[pl] = type(d)
13 dt[pl] = type(d)
14 if not d is None and not callable(d):
14 if (d is not None and d is not True and d is not False and
15 not callable(d)):
15 if s: s += ':'
16 if s: s += ':'
16 if l: l += '='
17 if l: l += '='
17 if s: short = short + s
18 if s: short = short + s
18 if l: long.append(l)
19 if l: long.append(l)
19
20
20 opts, args = getopt.getopt(args, short, long)
21 opts, args = getopt.getopt(args, short, long)
21
22
22 for opt, arg in opts:
23 for opt, arg in opts:
23 if dt[map[opt]] is type(fancyopts): state[map[opt]](state, map[opt], arg)
24 if dt[map[opt]] is type(fancyopts): state[map[opt]](state, map[opt], arg)
24 elif dt[map[opt]] is type(1): state[map[opt]] = int(arg)
25 elif dt[map[opt]] is type(1): state[map[opt]] = int(arg)
25 elif dt[map[opt]] is type(''): state[map[opt]] = arg
26 elif dt[map[opt]] is type(''): state[map[opt]] = arg
26 elif dt[map[opt]] is type([]): state[map[opt]].append(arg)
27 elif dt[map[opt]] is type([]): state[map[opt]].append(arg)
27 elif dt[map[opt]] is type(None): state[map[opt]] = True
28 elif dt[map[opt]] is type(None): state[map[opt]] = True
29 elif dt[map[opt]] is type(False): state[map[opt]] = True
28
30
29 return args
31 return args
30
32
@@ -1,6 +1,7 b''
1 #!/bin/sh
1 #!/bin/sh
2
2
3 hg init a
3 hg init a
4 cd a
4 cd a
5 hg -v log -v
5 hg -v log -v x
6 hg -v log -v x
6 true
7 true
General Comments 0
You need to be logged in to leave comments. Login now