in taskcat/_cli_core.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)
# Add global arguments
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_subparser(
usage,
description,
mod,
command_parser,
self.args["commands"][mod]["args"],
)
self.subcommand_parsers[mod] = mod_parser
# add subcommand parser if subcommands exist
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_subparser(
usage,
description,
subcommand_name,
subcommand_parser,
subcommand_args,
)
return parser