The option_class needs to be set correctly for OptionGroups that use self.add_option
Override OptionParser `__init__` to change the default Option class to the samba one.
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
return value
+class OptionParser(optparse.OptionParser):
+ """Samba OptionParser, adding support for required=True on Options."""
+
+ def __init__(self,
+ usage=None,
+ option_list=None,
+ option_class=Option,
+ version=None,
+ conflict_handler="error",
+ description=None,
+ formatter=None,
+ add_help_option=True,
+ prog=None,
+ epilog=None):
+ """
+ Ensure that option_class defaults to the Samba one.
+ """
+ super().__init__(usage, option_list, option_class, version,
+ conflict_handler, description, formatter,
+ add_help_option, prog, epilog)
+
+
class SambaOptions(optparse.OptionGroup):
"""General Samba-related command line options."""
from ldb import ERR_INVALID_CREDENTIALS, LdbError
from samba import colour
from samba.auth import system_session
-from samba.getopt import Option
+from samba.getopt import Option, OptionParser
from samba.logger import get_samba_logger
from samba.samdb import SamDB
traceback.print_tb(etraceback, file=self.errf)
def _create_parser(self, prog=None, epilog=None):
- parser = optparse.OptionParser(
+ parser = OptionParser(
usage=self.synopsis,
description=self.full_description,
formatter=PlainHelpFormatter(),
import random
import string
from io import StringIO
-from optparse import OptionParser
import samba.getopt as options
import samba.tests
from samba.auth import system_session
-from samba.netcmd import Option
+from samba.getopt import OptionParser
from samba.netcmd.main import cmd_sambatool
from samba.samdb import SamDB
def getSamDB(*argv):
"""a convenience function to get a samdb instance so that we can query it"""
- parser = OptionParser(option_class=Option)
+ parser = OptionParser()
sambaopts = options.SambaOptions(parser)
credopts = options.CredentialsOptions(parser)
parser.add_option("-H", "--URL",