| 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 |