in nubia/internal/registry_tools.py [0:0]
def _dump_opts_parser_common(opts_parser, plugin):
output = []
top_level_actions = [
action
for action in opts_parser._actions
if not isinstance(action, _SubParsersAction)
]
for action in top_level_actions:
option = {"extra_names": []}
for name in action.option_strings:
if name.startswith(opts_parser.prefix_chars * 2):
option["name"] = name
elif name.startswith(opts_parser.prefix_chars):
option["extra_names"].append(name)
else:
# we don't know what that is!
logger.warning(
"We found '%s' in option_strings of action %s", name, action
)
# we want to skip this particular one since it's hidden
if option.get("name", "").startswith("--_"):
continue
option["expects_argument"] = True if action.type is not None else False
option_name = option.get("name")
if option_name:
ds = plugin.get_completion_datasource_for_global_argument(option_name)
if ds:
option["values"] = ds.get_all()
output.append(option)
return output