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:
Petr Viktorin
2013-02-22 07:25:03 -05:00
committed by Martin Kosek
parent 68ffb4af2f
commit 8b8859ed7d
2 changed files with 5 additions and 4 deletions

View File

@@ -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():