|
|
|
@ -238,34 +238,38 @@ class PlaybookExecutor:
|
|
|
|
|
|
|
|
|
|
def _do_var_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
|
|
|
|
|
|
|
|
|
if prompt and default is not None:
|
|
|
|
|
msg = "%s [%s]: " % (prompt, default)
|
|
|
|
|
elif prompt:
|
|
|
|
|
msg = "%s: " % prompt
|
|
|
|
|
else:
|
|
|
|
|
msg = 'input for %s: ' % varname
|
|
|
|
|
|
|
|
|
|
def do_prompt(prompt, private):
|
|
|
|
|
if sys.stdout.encoding:
|
|
|
|
|
msg = prompt.encode(sys.stdout.encoding)
|
|
|
|
|
if sys.__stdin__.isatty():
|
|
|
|
|
if prompt and default is not None:
|
|
|
|
|
msg = "%s [%s]: " % (prompt, default)
|
|
|
|
|
elif prompt:
|
|
|
|
|
msg = "%s: " % prompt
|
|
|
|
|
else:
|
|
|
|
|
msg = 'input for %s: ' % varname
|
|
|
|
|
|
|
|
|
|
def do_prompt(prompt, private):
|
|
|
|
|
if sys.stdout.encoding:
|
|
|
|
|
msg = prompt.encode(sys.stdout.encoding)
|
|
|
|
|
else:
|
|
|
|
|
# when piping the output, or at other times when stdout
|
|
|
|
|
# may not be the standard file descriptor, the stdout
|
|
|
|
|
# encoding may not be set, so default to something sane
|
|
|
|
|
msg = prompt.encode(locale.getpreferredencoding())
|
|
|
|
|
if private:
|
|
|
|
|
return getpass.getpass(msg)
|
|
|
|
|
return raw_input(msg)
|
|
|
|
|
|
|
|
|
|
if confirm:
|
|
|
|
|
while True:
|
|
|
|
|
result = do_prompt(msg, private)
|
|
|
|
|
second = do_prompt("confirm " + msg, private)
|
|
|
|
|
if result == second:
|
|
|
|
|
break
|
|
|
|
|
self._display.display("***** VALUES ENTERED DO NOT MATCH ****")
|
|
|
|
|
else:
|
|
|
|
|
# when piping the output, or at other times when stdout
|
|
|
|
|
# may not be the standard file descriptor, the stdout
|
|
|
|
|
# encoding may not be set, so default to something sane
|
|
|
|
|
msg = prompt.encode(locale.getpreferredencoding())
|
|
|
|
|
if private:
|
|
|
|
|
return getpass.getpass(msg)
|
|
|
|
|
return raw_input(msg)
|
|
|
|
|
|
|
|
|
|
if confirm:
|
|
|
|
|
while True:
|
|
|
|
|
result = do_prompt(msg, private)
|
|
|
|
|
second = do_prompt("confirm " + msg, private)
|
|
|
|
|
if result == second:
|
|
|
|
|
break
|
|
|
|
|
self._display.display("***** VALUES ENTERED DO NOT MATCH ****")
|
|
|
|
|
else:
|
|
|
|
|
result = do_prompt(msg, private)
|
|
|
|
|
result = None
|
|
|
|
|
self._display.warning("Not prompting as we are not in interactive mode")
|
|
|
|
|
|
|
|
|
|
# if result is false and default is not None
|
|
|
|
|
if not result and default is not None:
|
|
|
|
|