mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
305: Ported cli.py to changes in public.py
This commit is contained in:
parent
4a96ec2dc7
commit
2d83614006
@ -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(
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user