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]
|
cmd = self.Command[name]
|
||||||
return cmd
|
return cmd
|
||||||
|
|
||||||
def argv_to_keyword_arguments(self, cmd, argv):
|
def process_keyword_arguments(self, cmd, kw):
|
||||||
"""Get the keyword arguments for a Command"""
|
"""Get the keyword arguments for a Command"""
|
||||||
kw = self.parse(cmd, argv)
|
|
||||||
if self.env.interactive:
|
if self.env.interactive:
|
||||||
self.prompt_interactively(cmd, kw)
|
self.prompt_interactively(cmd, kw)
|
||||||
if self.env.interactive:
|
if self.env.interactive:
|
||||||
@ -1061,10 +1060,11 @@ class cli(backend.Executioner):
|
|||||||
if cmd is None:
|
if cmd is None:
|
||||||
return
|
return
|
||||||
name = cmd.name
|
name = cmd.name
|
||||||
kw = self.argv_to_keyword_arguments(cmd, argv[1:])
|
kw = self.parse(cmd, argv[1:])
|
||||||
if not isinstance(cmd, frontend.Local):
|
if not isinstance(cmd, frontend.Local):
|
||||||
self.create_context()
|
self.create_context()
|
||||||
try:
|
try:
|
||||||
|
kw = self.process_keyword_arguments(cmd, kw)
|
||||||
result = self.execute(name, **kw)
|
result = self.execute(name, **kw)
|
||||||
if callable(cmd.output_for_cli):
|
if callable(cmd.output_for_cli):
|
||||||
for param in cmd.params():
|
for param in cmd.params():
|
||||||
|
@ -18,7 +18,8 @@ class TestCLIParsing(object):
|
|||||||
executioner = api.Backend.cli
|
executioner = api.Backend.cli
|
||||||
|
|
||||||
cmd = executioner.get_command(argv)
|
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(expected_command_name, cmd.name, 'Command name')
|
||||||
util.assert_deepequal(kw_expected, kw_got)
|
util.assert_deepequal(kw_expected, kw_got)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user