From 71d36aa6a0b9627ae818d116c7240197a62cff74 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Thu, 4 Sep 2008 07:18:26 +0000 Subject: 258: Added some experimental features for interactively prompting for values --- ipalib/cli.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'ipalib/cli.py') diff --git a/ipalib/cli.py b/ipalib/cli.py index 3cecace7..a495924e 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -147,8 +147,32 @@ class CLI(object): def run_cmd(self, cmd, argv): (args, kw) = self.parse(cmd, argv) + self.run_interactive(cmd, args, kw) + + def run_interactive(self, cmd, args, kw): + for option in cmd.smart_option_order(): + if option.name not in kw: + default = option.get_default(**kw) + if default is None: + prompt = '%s: ' % option.name + else: + prompt = '%s [%s]: ' % (option.name, default) + error = None + while True: + if error is not None: + print '>>> %s: %s' % (option.name, error) + value = raw_input(prompt) + if default is not None and len(value) == 0: + value = default + if len(value) == 0: + error = 'Must supply a value' + else: + kw[option.name] = value + break cmd(*args, **kw) + + def parse(self, cmd, argv): parser = self.build_parser(cmd) (kwc, args) = parser.parse_args(argv, KWCollector()) -- cgit