samba-tool: Determine long option from docstring.
authorJelmer Vernooij <jelmer@samba.org>
Thu, 13 Oct 2011 21:08:32 +0000 (23:08 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 13 Oct 2011 22:22:56 +0000 (00:22 +0200)
source4/scripting/python/samba/netcmd/__init__.py
source4/scripting/python/samba/netcmd/domain.py
source4/scripting/python/samba/netcmd/testparm.py

index 33ed3d557892a19df8a825867a521b66f7497e38..19fae071c6db0aa3d1e937d2e3ba9f6adb5bac77 100644 (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)
+
+    def _get_full_description(self):
+        lines = self.__doc__.split("\n")
+        return lines[0] + "\n" + textwrap.dedent("\n".join(lines[1:]))
 
-    # 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 = ""
+    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']:
index 05e82b5dfa879d9fd7e5c529425ca5c6a9d30784..77026b983966a336a91a2ebc69fbf975b3abdb91 100644 (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,12 +528,13 @@ 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.
 
-    synopsis = "%prog domain samba3upgrade [options] <samba3_smb_conf>"
+    Specify either samba3 database directory (with --libdir) or
+    samba3 testparm utility (with --testparm).
+    """
 
-    long_description = """Specify either samba3 database directory (with --libdir) or
-samba3 testparm utility (with --testparm)."""
+    synopsis = "%prog domain samba3upgrade [options] <samba3_smb_conf>"
 
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
index 9de6fdfa20556469a0373304a83d839271bae12c..b69c35153874feed6a2f5c84798abe9a7ae1f655 100755 (executable)
@@ -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]"