From 99d7638ff5c5cddb4f23d25ad13ef122476d5679 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Tue, 12 Aug 2008 16:49:23 +0000 Subject: 115: CLI now parses out kw args; cmd.__call__() now uses print_n_call() to give feedback on the calling --- ipalib/cli.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'ipalib/cli.py') diff --git a/ipalib/cli.py b/ipalib/cli.py index 40edc890..ad54d77a 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -76,17 +76,17 @@ class CLI(object): self.print_commands() print 'ipa: ERROR: unknown command %r' % cmd sys.exit(2) - self.run_cmd(cmd) - - def run_cmd(self, cmd): - (options, args) = self.build_parser(cmd) - print options - - def build_parser(self, cmd): - parser = optparse.OptionParser() - for option in self[cmd].options: - parser.add_option('--%s' % to_cli(option.name), - help=option.get_doc(_), - ) - - (options, args) parser.parse_args() + self.run_cmd(cmd, sys.argv[2:]) + + def run_cmd(self, cmd, args): + kw = dict(self.parse_kw(args)) + self[cmd](**kw) + + def parse_kw(self, args): + for arg in args: + m = re.match(r'^--([a-z][-a-z0-9]*)=(.+)$', arg) + if m is not None: + yield ( + from_cli(m.group(1)), + m.group(2), + ) -- cgit