summaryrefslogtreecommitdiff
path: root/source4/scripting/python
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2009-12-30 21:06:21 +0100
committerAndrew Tridgell <tridge@samba.org>2009-12-31 17:33:28 +1100
commit7effe2d2e30191c067ae1290224d388d96701b53 (patch)
treeecdd3ab444261dd81548b3afd9dd4099812b6ae1 /source4/scripting/python
parent9e5ef916d41ee5f27616d18e431a9943310d3db6 (diff)
downloadsamba-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/scripting/python')
-rw-r--r--source4/scripting/python/samba/netcmd/__init__.py29
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):