forked from espressif/esp-idf
idf.py: Add positional arguments to subcommands
This commit is contained in:
14
tools/idf.py
14
tools/idf.py
@@ -599,6 +599,13 @@ def init_cli():
|
|||||||
|
|
||||||
self.callback = wrapped_callback
|
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):
|
class CLI(click.MultiCommand):
|
||||||
"""Action list contains all actions with options available for CLI"""
|
"""Action list contains all actions with options available for CLI"""
|
||||||
|
|
||||||
@@ -630,8 +637,12 @@ def init_cli():
|
|||||||
|
|
||||||
# Actions
|
# Actions
|
||||||
for name, action in action_list.get("actions", {}).items():
|
for name, action in action_list.get("actions", {}).items():
|
||||||
|
arguments = action.pop("arguments", [])
|
||||||
options = action.pop("options", [])
|
options = action.pop("options", [])
|
||||||
|
|
||||||
|
if arguments is None:
|
||||||
|
arguments = []
|
||||||
|
|
||||||
if options is None:
|
if options is None:
|
||||||
options = []
|
options = []
|
||||||
|
|
||||||
@@ -639,6 +650,9 @@ def init_cli():
|
|||||||
for alias in [name] + action.get("aliases", []):
|
for alias in [name] + action.get("aliases", []):
|
||||||
self.commands_with_aliases[alias] = name
|
self.commands_with_aliases[alias] = name
|
||||||
|
|
||||||
|
for argument_args in arguments:
|
||||||
|
self._actions[name].params.append(Argument(**argument_args))
|
||||||
|
|
||||||
for option_args in options:
|
for option_args in options:
|
||||||
option_args["param_decls"] = option_args.pop("names")
|
option_args["param_decls"] = option_args.pop("names")
|
||||||
self._actions[name].params.append(click.Option(**option_args))
|
self._actions[name].params.append(click.Option(**option_args))
|
||||||
|
Reference in New Issue
Block a user