diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-21 19:00:41 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-21 19:00:41 +0000 |
commit | 2d836140064154c461aec1b24ae8d774cbd12444 (patch) | |
tree | 4cbc542d83a2653c9b02e7fda69bd42f456883ca /ipalib/cli.py | |
parent | 4a96ec2dc7975e5c6f76e87be0c62a51d262de32 (diff) | |
download | freeipa-2d836140064154c461aec1b24ae8d774cbd12444.tar.gz freeipa-2d836140064154c461aec1b24ae8d774cbd12444.tar.xz freeipa-2d836140064154c461aec1b24ae8d774cbd12444.zip |
305: Ported cli.py to changes in public.py
Diffstat (limited to 'ipalib/cli.py')
-rw-r--r-- | ipalib/cli.py | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py index 594e2812..b16fe6b5 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -198,39 +198,42 @@ class CLI(object): ) def run_cmd(self, cmd, argv): - (args, kw) = self.parse(cmd, argv) - try: - args = cmd.group_args(*args) - except errors.ArgumentError, e: - exit_error('%s %s' % (to_cli(cmd.name), e.error)) - self.run_interactive(cmd, args, kw) + kw = self.parse(cmd, argv) + self.run_interactive(cmd, 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) + def run_interactive(self, cmd, kw): + for param in cmd.params(): + if param.name not in kw: + default = param.get_default(**kw) if default is None: - prompt = '%s: ' % option.name + prompt = '%s: ' % param.name else: - prompt = '%s [%s]: ' % (option.name, default) + prompt = '%s [%s]: ' % (param.name, default) error = None while True: if error is not None: - print '>>> %s: %s' % (option.name, error) + print '>>> %s: %s' % (param.name, error) raw = raw_input(prompt) try: - value = option(raw, **kw) + value = param(raw, **kw) if value is not None: - kw[option.name] = value + kw[param.name] = value break except errors.ValidationError, e: error = e.error - cmd(*args, **kw) + cmd(**kw) def parse(self, cmd, argv): parser = self.build_parser(cmd) (kwc, args) = parser.parse_args(argv, KWCollector()) - return (args, kwc.__todict__()) + kw = kwc.__todict__() + try: + arg_kw = cmd.args_to_kw(*args) + except errors.ArgumentError, e: + exit_error('%s %s' % (to_cli(cmd.name), e.error)) + assert set(arg_kw).intersection(kw) == set() + kw.update(arg_kw) + return kw def build_parser(self, cmd): parser = optparse.OptionParser( |