diff --git a/src/oebuild/app/main.py b/src/oebuild/app/main.py index 616af9b75ff8d068813a99ff59af3f761eaa482f..aa62d6f016d74b0795669942e938dc85dd3947ae 100644 --- a/src/oebuild/app/main.py +++ b/src/oebuild/app/main.py @@ -37,6 +37,7 @@ class OebuildApp: self.base_oebuild_dir = oebuild_util.get_base_oebuild() self.oebuild_parser = None self.subparser_gen = None + self.subparsers = {} self.cmd = None try: plugins_dir = pathlib.Path(self.base_oebuild_dir,'app/conf','plugins.yaml') @@ -70,7 +71,8 @@ class OebuildApp: # Add sub-parsers for the command_ext commands. for command_name in self.command_ext: - subparser_gen.add_parser(command_name, add_help=False) + subparser = subparser_gen.add_parser(command_name, add_help=False) + self.subparsers[command_name] = subparser # Save the instance state. self.oebuild_parser = oebuild_parser @@ -132,7 +134,8 @@ class OebuildApp: # Check a program invariant. self.cmd =self.command_spec[name].factory() - args = self.cmd.add_parser(self.subparser_gen) + parser = self.subparsers[name] + args = self.cmd.add_parser(parser) self.cmd.run(args, unknown) diff --git a/src/oebuild/command.py b/src/oebuild/command.py index a87abd3623dfc8ad94dd5bb7a457a14ab5ce0b65..3351658b1f9c3c61a7da5f55f8a01135e2bae640 100644 --- a/src/oebuild/command.py +++ b/src/oebuild/command.py @@ -78,13 +78,16 @@ class OebuildCommand(ABC): ''' args = args.parse_args(['-h']) - def _parser(self, parser_adder, **kwargs): - # Create and return a "standard" parser. + def _parser(self, parser, **kwargs): + # return a "standard" parser. kwargs['help'] = self.help_msg kwargs['description'] = self.description kwargs['formatter_class'] = argparse.RawDescriptionHelpFormatter - return parser_adder.add_parser(self.name, **kwargs) + + parser.__dict__.update(kwargs) + + return parser class CommandError(RuntimeError):