diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2009-12-30 21:06:21 +0100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-12-31 17:33:28 +1100 |
commit | 7effe2d2e30191c067ae1290224d388d96701b53 (patch) | |
tree | ecdd3ab444261dd81548b3afd9dd4099812b6ae1 /source4 | |
parent | 9e5ef916d41ee5f27616d18e431a9943310d3db6 (diff) | |
download | samba-7effe2d2e30191c067ae1290224d388d96701b53.tar.gz samba-7effe2d2e30191c067ae1290224d388d96701b53.tar.bz2 samba-7effe2d2e30191c067ae1290224d388d96701b53.zip |
net: Support 'super' commands implemented in Python.
Signed-off-by: Andrew Tridgell <tridge@samba.org>
Diffstat (limited to 'source4')
-rw-r--r-- | source4/scripting/python/samba/netcmd/__init__.py | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/source4/scripting/python/samba/netcmd/__init__.py b/source4/scripting/python/samba/netcmd/__init__.py index 9798f3529b..a204ab897b 100644 --- a/source4/scripting/python/samba/netcmd/__init__.py +++ b/source4/scripting/python/samba/netcmd/__init__.py @@ -40,7 +40,7 @@ class Command(object): name = property(_get_name) - def usage(self, args): + def usage(self, *args): parser, _ = self._create_parser() parser.print_usage() @@ -49,7 +49,7 @@ class Command(object): def _get_synopsis(self): ret = self.name if self.takes_args: - ret += " " + " ".join(self.takes_args) + ret += " " + " ".join([x.upper() for x in self.takes_args]) return ret synopsis = property(_get_synopsis) @@ -90,7 +90,7 @@ class Command(object): if arg[-1] == "*": max_args = -1 if len(args) < min_args or (max_args != -1 and len(args) > max_args): - self.usage(args) + self.usage(*args) return -1 try: return self.run(*args, **kwargs) @@ -108,21 +108,22 @@ class SuperCommand(Command): subcommands = {} - def run(self, subcommand, *args, **kwargs): - if not subcommand in subcommands: - print >>sys.stderr, "ERROR: No such subcommand '%s'" % subcommand - return subcommands[subcommand].run(*args, **kwargs) - - def usage(self, subcommand=None, *args, **kwargs): + def _run(self, myname, subcommand=None, *args): if subcommand is None: - print "Available subcommands" - for subcommand in subcommands: + print "Available subcommands:" + for subcommand in self.subcommands: print "\t%s" % subcommand return 0 + if not subcommand in self.subcommands: + raise CommandError("No such subcommand '%s'" % subcommand) + return self.subcommands[subcommand]._run(subcommand, *args) + + def usage(self, myname, subcommand=None, *args): + if subcommand is None or not subcommand in self.subcommands: + print "Usage: %s (%s) [options]" % (myname, + " | ".join(self.subcommands.keys())) else: - if not subcommand in subcommands: - print >>sys.stderr, "ERROR: No such subcommand '%s'" % subcommand - return subcommands[subcommand].usage(*args, **kwargs) + return self.subcommands[subcommand].usage(*args) class CommandError(Exception): |