Total Complexity | 8 |
Total Lines | 43 |
Duplicated Lines | 0 % |
1 | import argparse |
||
9 | class _CmdArgs(object): |
||
10 | def __init__(self): |
||
11 | self.parser = ArgParseWrapper(add_help=False) |
||
12 | self.letterArgs = [] |
||
13 | self.args = None |
||
14 | self.argsParsed = False |
||
15 | |||
16 | def set_description(self, desc): |
||
17 | self.parser.description = desc |
||
18 | |||
19 | def add_arg(self, name, argType, argHelp, noShort=False): |
||
20 | |||
21 | args = [] |
||
22 | |||
23 | args.append('--' + name) |
||
24 | |||
25 | if not noShort: |
||
26 | # Check through |
||
27 | letter = None |
||
28 | for i in range(len(name)): |
||
29 | if name[i] in self.letterArgs: |
||
30 | continue |
||
31 | self.letterArgs.append(name[i]) |
||
32 | |||
33 | letter = name[i] |
||
34 | break |
||
35 | else: |
||
36 | print('All possible short arguments are taken for this name.') |
||
37 | return |
||
38 | |||
39 | args.append('-' + letter) |
||
40 | |||
41 | self.parser.add_argument(*args, type=argType, help=argHelp) |
||
42 | |||
43 | return vars(self.parser.parse_args())[name] |
||
44 | |||
45 | def parse_args(self): |
||
46 | # Add the help option/action after all arguments |
||
47 | self.parser.add_argument('-h', '--help', |
||
48 | action='help', |
||
49 | default=argparse.SUPPRESS, help='show this help message and exit') |
||
50 | self.args = vars(self.parser.parse_args()) |
||
51 | self.argsParsed = True |
||
52 | |||
56 |