From f7af6329b56c3a05169300bbf5c638b7e3ed7b3e Mon Sep 17 00:00:00 2001 From: Daniel Mach Date: Thu, 29 Sep 2022 17:44:52 +0200 Subject: [PATCH] argparse: Prefer sub-command options over global options --- osc/cmdln.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/osc/cmdln.py b/osc/cmdln.py index 6fcd86ff..215046f2 100644 --- a/osc/cmdln.py +++ b/osc/cmdln.py @@ -169,15 +169,16 @@ class Cmdln: help=help_text, description=help_desc, prog=self.get_subcommand_prog(cmd_name), - formatter_class=HelpFormatter + formatter_class=HelpFormatter, + conflict_handler="resolve", ) + # add hidden copy of global options so they can be used in any place self.add_global_options(subparser, suppress=True) + + # add sub-command options, overriding hidden copies of global options if needed (due to conflict_handler="resolve") for option_args, option_kwargs in options: - try: - subparser.add_argument(*option_args, **option_kwargs) - except argparse.ArgumentError as e: - print(f"WARNING: Could not add argument '{e.argument_name}' to the '{cmd_name}' sub-command: {e}", file=sys.stderr) + subparser.add_argument(*option_args, **option_kwargs) def argparse_error(self, *args, **kwargs): """