in iact3/cli.py [0:0]
def _build_parser(self, description, version):
parser = CustomParser(
description=description,
usage=self._build_usage(),
formatter_class=argparse.RawDescriptionHelpFormatter,
)
if version:
parser.add_argument('-v', '--version', action='version', version=version)
self._add_arguments(self.args['global'], parser)
description = self._get_command_help(self._modules)
command_parser = self._add_sub(
parser=parser,
title='commands',
description=description,
required=True,
metavar='',
dest='_command',
)
self.command_parser = command_parser
for mod in self._modules:
usage = self._build_usage({'command': mod})
description = self._get_help(self._modules[mod])
mod_parser = self._add_sub_parser(usage, description, mod, command_parser,
self.args['commands'][mod]['args'])
self.subcommand_parsers[mod] = mod_parser
subcommands = self.args['commands'][mod]['subcommands']
if subcommands:
class_methods = {
m[0]: m[1] for m in self._get_class_methods(self._modules[mod])
}
description = self._get_command_help(class_methods)
subcommand_parser = self._add_sub(
parser=mod_parser,
title='subcommands',
description=description,
required=True,
metavar='',
dest='_subcommand',
)
for subcommand_name, subcommand_args in subcommands.items():
usage = self._build_usage({'subcommand': subcommand_name})
description = self._get_help(class_methods[subcommand_name])
self._add_sub_parser(usage, description, subcommand_name, subcommand_parser, subcommand_args)
return parser