diff options
Diffstat (limited to 'source4/scripting/python/samba/netcmd/__init__.py')
-rw-r--r-- | source4/scripting/python/samba/netcmd/__init__.py | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/source4/scripting/python/samba/netcmd/__init__.py b/source4/scripting/python/samba/netcmd/__init__.py index 4be8977b45..5c18d29fc3 100644 --- a/source4/scripting/python/samba/netcmd/__init__.py +++ b/source4/scripting/python/samba/netcmd/__init__.py @@ -39,8 +39,9 @@ class Command(object): name = property(_get_name) - def usage(self): - self.parser.print_usage() + def usage(self, args): + parser, _ = self._create_parser() + parser.print_usage() description = property(_get_description) @@ -54,20 +55,34 @@ class Command(object): takes_args = [] takes_options = [] - takes_optiongroups = [] - - def __init__(self): - self.parser = optparse.OptionParser(self.synopsis) - self.parser.add_options(self.takes_options) - for optiongroup in self.takes_optiongroups: - self.parser.add_option_group(optiongroup(self.parser)) + takes_optiongroups = {} + + def _create_parser(self): + parser = optparse.OptionParser(self.synopsis) + parser.prog = "net" + parser.add_options(self.takes_options) + optiongroups = {} + for name, optiongroup in self.takes_optiongroups.iteritems(): + optiongroups[name] = optiongroup(parser) + parser.add_option_group(optiongroups[name]) + return parser, optiongroups def message(self, text): print text def _run(self, *argv): - opts, args = self.parser.parse_args(list(argv)) - return self.run(*args, **opts.__dict__) + parser, optiongroups = self._create_parser() + opts, args = parser.parse_args(list(argv)) + # Filter out options from option groups + kwargs = dict(opts.__dict__) + for option_group in parser.option_groups: + for option in option_group.option_list: + del kwargs[option.dest] + kwargs.update(optiongroups) + if len(args) < len(self.takes_args): + self.usage(args) + return -1 + return self.run(*args, **kwargs) def run(self): """Run the command. This should be overriden by all subclasses.""" @@ -107,3 +122,5 @@ class CommandError(Exception): commands = {} from samba.netcmd.pwsettings import cmd_pwsettings commands["pwsettings"] = cmd_pwsettings() +from samba.netcmd.domainlevel import cmd_domainlevel +commands["domainlevel"] = cmd_domainlevel() |