From afc30b09bcf9bd5e31d71ff8dc960b3f93984185 Mon Sep 17 00:00:00 2001 From: Sergei Silnov Date: Mon, 10 Jun 2019 16:52:04 +0200 Subject: [PATCH] idf.py: Add positional arguments to subcommands --- tools/idf.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/idf.py b/tools/idf.py index bbf9f609dd..17aa1365d7 100755 --- a/tools/idf.py +++ b/tools/idf.py @@ -599,6 +599,13 @@ def init_cli(): self.callback = wrapped_callback + class Argument(click.Argument): + """Positional argument""" + + def __init__(self, **kwargs): + names = kwargs.pop("names") + super(Argument, self).__init__(names, **kwargs) + class CLI(click.MultiCommand): """Action list contains all actions with options available for CLI""" @@ -630,8 +637,12 @@ def init_cli(): # Actions for name, action in action_list.get("actions", {}).items(): + arguments = action.pop("arguments", []) options = action.pop("options", []) + if arguments is None: + arguments = [] + if options is None: options = [] @@ -639,6 +650,9 @@ def init_cli(): for alias in [name] + action.get("aliases", []): self.commands_with_aliases[alias] = name + for argument_args in arguments: + self._actions[name].params.append(Argument(**argument_args)) + for option_args in options: option_args["param_decls"] = option_args.pop("names") self._actions[name].params.append(click.Option(**option_args))