summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-21 19:00:41 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-21 19:00:41 +0000
commit2d836140064154c461aec1b24ae8d774cbd12444 (patch)
tree4cbc542d83a2653c9b02e7fda69bd42f456883ca
parent4a96ec2dc7975e5c6f76e87be0c62a51d262de32 (diff)
downloadfreeipa-2d836140064154c461aec1b24ae8d774cbd12444.tar.gz
freeipa-2d836140064154c461aec1b24ae8d774cbd12444.tar.xz
freeipa-2d836140064154c461aec1b24ae8d774cbd12444.zip
305: Ported cli.py to changes in public.py
-rw-r--r--ipalib/cli.py37
-rw-r--r--ipalib/plugins/example.py9
2 files changed, 29 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(
diff --git a/ipalib/plugins/example.py b/ipalib/plugins/example.py
index 4c62a5de..74874c95 100644
--- a/ipalib/plugins/example.py
+++ b/ipalib/plugins/example.py
@@ -39,6 +39,15 @@ api.register(discover)
# Register some methods for the 'user' object:
class user_add(public.Method):
'Add a new user.'
+
+ takes_args = ['login']
+
+ takes_options = [
+ 'givenname',
+ 'sn',
+ 'initials',
+ ]
+
api.register(user_add)
class user_del(public.Method):