mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
cli: Do interactive prompting after a context is created
Some commands require a connection for interactive prompting. Prompt after the connection is created. Option parsing is still done before connecting so that help can be printed out without a Kerberos ticket. https://fedorahosted.org/freeipa/ticket/3453
This commit is contained in:
parent
68ffb4af2f
commit
8b8859ed7d
@ -1039,9 +1039,8 @@ class cli(backend.Executioner):
|
||||
cmd = self.Command[name]
|
||||
return cmd
|
||||
|
||||
def argv_to_keyword_arguments(self, cmd, argv):
|
||||
def process_keyword_arguments(self, cmd, kw):
|
||||
"""Get the keyword arguments for a Command"""
|
||||
kw = self.parse(cmd, argv)
|
||||
if self.env.interactive:
|
||||
self.prompt_interactively(cmd, kw)
|
||||
if self.env.interactive:
|
||||
@ -1061,10 +1060,11 @@ class cli(backend.Executioner):
|
||||
if cmd is None:
|
||||
return
|
||||
name = cmd.name
|
||||
kw = self.argv_to_keyword_arguments(cmd, argv[1:])
|
||||
kw = self.parse(cmd, argv[1:])
|
||||
if not isinstance(cmd, frontend.Local):
|
||||
self.create_context()
|
||||
try:
|
||||
kw = self.process_keyword_arguments(cmd, kw)
|
||||
result = self.execute(name, **kw)
|
||||
if callable(cmd.output_for_cli):
|
||||
for param in cmd.params():
|
||||
|
@ -18,7 +18,8 @@ class TestCLIParsing(object):
|
||||
executioner = api.Backend.cli
|
||||
|
||||
cmd = executioner.get_command(argv)
|
||||
kw_got = executioner.argv_to_keyword_arguments(cmd, argv[1:])
|
||||
kw_got = executioner.parse(cmd, argv[1:])
|
||||
kw_got = executioner.process_keyword_arguments(cmd, kw_got)
|
||||
util.assert_deepequal(expected_command_name, cmd.name, 'Command name')
|
||||
util.assert_deepequal(kw_expected, kw_got)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user