Fixed #27870 -- Cleaned up ManagementUtility.autocomplete().
This commit is contained in:
parent
7d20a7d88a
commit
cc5c1b7568
|
@ -112,7 +112,7 @@ def call_command(command_name, *args, **options):
|
||||||
parser = command.create_parser('', command_name)
|
parser = command.create_parser('', command_name)
|
||||||
# Use the `dest` option name from the parser option
|
# Use the `dest` option name from the parser option
|
||||||
opt_mapping = {
|
opt_mapping = {
|
||||||
sorted(s_opt.option_strings)[0].lstrip('-').replace('-', '_'): s_opt.dest
|
min(s_opt.option_strings).lstrip('-').replace('-', '_'): s_opt.dest
|
||||||
for s_opt in parser._actions if s_opt.option_strings
|
for s_opt in parser._actions if s_opt.option_strings
|
||||||
}
|
}
|
||||||
arg_options = {opt_mapping.get(key, key): value for key, value in options.items()}
|
arg_options = {opt_mapping.get(key, key): value for key, value in options.items()}
|
||||||
|
@ -254,19 +254,18 @@ class ManagementUtility:
|
||||||
pass
|
pass
|
||||||
parser = subcommand_cls.create_parser('', cwords[0])
|
parser = subcommand_cls.create_parser('', cwords[0])
|
||||||
options.extend(
|
options.extend(
|
||||||
(sorted(s_opt.option_strings)[0], s_opt.nargs != 0)
|
(min(s_opt.option_strings), s_opt.nargs != 0)
|
||||||
for s_opt in parser._actions if s_opt.option_strings
|
for s_opt in parser._actions if s_opt.option_strings
|
||||||
)
|
)
|
||||||
# filter out previously specified options from available options
|
# filter out previously specified options from available options
|
||||||
prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]]
|
prev_opts = {x.split('=')[0] for x in cwords[1:cword - 1]}
|
||||||
options = [opt for opt in options if opt[0] not in prev_opts]
|
options = (opt for opt in options if opt[0] not in prev_opts)
|
||||||
|
|
||||||
# filter options by current input
|
# filter options by current input
|
||||||
options = sorted((k, v) for k, v in options if k.startswith(curr))
|
options = sorted((k, v) for k, v in options if k.startswith(curr))
|
||||||
for option in options:
|
for opt_label, require_arg in options:
|
||||||
opt_label = option[0]
|
|
||||||
# append '=' to options which require args
|
# append '=' to options which require args
|
||||||
if option[1]:
|
if require_arg:
|
||||||
opt_label += '='
|
opt_label += '='
|
||||||
print(opt_label)
|
print(opt_label)
|
||||||
# Exit code of the bash completion function is never passed back to
|
# Exit code of the bash completion function is never passed back to
|
||||||
|
|
Loading…
Reference in New Issue