1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-04 08:22:08 +03:00

samba-tool: Determine long option from docstring.

This commit is contained in:
Jelmer Vernooij
2011-10-13 23:08:32 +02:00
parent 60de9b7bbf
commit be7a75b29a
3 changed files with 25 additions and 17 deletions

View File

@ -23,6 +23,7 @@ import optparse, samba
from samba import getopt as options
from ldb import LdbError
import sys, traceback
import textwrap
class Option(optparse.Option):
@ -32,16 +33,21 @@ class Option(optparse.Option):
class Command(object):
"""A samba-tool command."""
def _get_description(self):
def _get_short_description(self):
return self.__doc__.splitlines()[0].rstrip("\n")
description = property(_get_description)
short_description = property(_get_short_description)
# synopsis must be defined in all subclasses in order to provide the command usage
synopsis = "Please provide synopsis for this command."
# long_description is a string describing the command in details
long_description = ""
def _get_full_description(self):
lines = self.__doc__.split("\n")
return lines[0] + "\n" + textwrap.dedent("\n".join(lines[1:]))
full_description = property(_get_full_description)
# synopsis must be defined in all subclasses in order to provide the
# command usage
synopsis = None
takes_args = []
takes_options = []
takes_optiongroups = {
@ -91,7 +97,7 @@ class Command(object):
def _create_parser(self):
parser = optparse.OptionParser(usage=self.synopsis,
description=self.long_description)
description=self.full_description)
parser.add_options(self.takes_options)
optiongroups = {}
for name, optiongroup in self.takes_optiongroups.iteritems():
@ -157,8 +163,8 @@ class SuperCommand(Command):
def _run(self, myname, subcommand=None, *args):
if subcommand in self.subcommands:
return self.subcommands[subcommand]._run(subcommand, *args)
if (myname == "samba-tool"):
if myname == "samba-tool":
usage = "samba-tool <subcommand>"
else:
usage = "samba-tool %s <subcommand>" % myname
@ -168,7 +174,8 @@ class SuperCommand(Command):
subcmds.sort()
max_length = max([len(c) for c in subcmds])
for cmd in subcmds:
self.outf.write(" %*s - %s\n" % (-max_length, cmd, self.subcommands[cmd].description))
self.outf.write(" %*s - %s\n" % (
-max_length, cmd, self.subcommands[cmd].short_description))
if subcommand in [None]:
raise CommandError("You must specify a subcommand")
if subcommand in ['help', '-h', '--help']:

View File

@ -25,7 +25,7 @@
import samba.getopt as options
import ldb
import sys, os
import os
import tempfile
import logging
from samba import Ldb
@ -528,13 +528,14 @@ class cmd_domain_passwordsettings(Command):
class cmd_domain_samba3upgrade(Command):
"""Upgrade from Samba3 database to Samba4 AD database"""
"""Upgrade from Samba3 database to Samba4 AD database.
Specify either samba3 database directory (with --libdir) or
samba3 testparm utility (with --testparm).
"""
synopsis = "%prog domain samba3upgrade [options] <samba3_smb_conf>"
long_description = """Specify either samba3 database directory (with --libdir) or
samba3 testparm utility (with --testparm)."""
takes_optiongroups = {
"sambaopts": options.SambaOptions,
"versionopts": options.VersionOptions

View File

@ -42,7 +42,7 @@ import samba.getopt as options
from samba.netcmd import Command, CommandError, Option
class cmd_testparm(Command):
"""Syntax check the configuration file"""
"""Syntax check the configuration file."""
synopsis = "%prog testparm [options]"