def _build_parser()

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