-import os, sys, urllib
+import os, sys, urllib, textwrap
import codecs
from twisted.python import usage
from allmydata.util.assertutil import precondition
def get_default_nodedir():
return _default_nodedir
+def wrap_paragraphs(text, width):
+ # like textwrap.wrap(), but preserve paragraphs (delimited by double
+ # newlines) and leading whitespace, and remove internal whitespace.
+ text = textwrap.dedent(text)
+ if text.startswith("\n"):
+ text = text[1:]
+ return "\n\n".join([textwrap.fill(paragraph, width=width)
+ for paragraph in text.split("\n\n")])
class BaseOptions(usage.Options):
def __init__(self):
def opt_version(self):
raise usage.UsageError("--version not allowed on subcommands")
+ description = None
+ description_unwrapped = None
+
+ def __str__(self):
+ width = int(os.environ.get('COLUMNS', '80'))
+ s = (self.getSynopsis() + '\n' +
+ "(use 'tahoe --help' to view global options)\n" +
+ '\n' +
+ self.getUsage())
+ if self.description:
+ s += '\n' + wrap_paragraphs(self.description, width) + '\n'
+ if self.description_unwrapped:
+ du = textwrap.dedent(self.description_unwrapped)
+ if du.startswith("\n"):
+ du = du[1:]
+ s += '\n' + du + '\n'
+ return s
+
class BasedirOptions(BaseOptions):
default_nodedir = _default_nodedir
print >>self.stdout, allmydata.get_package_versions_string(show_paths=True, debug=True)
self.no_command_needed = True
- def getSynopsis(self):
- return "\nUsage: tahoe [global-opts] <command> [command-options]"
+ def __str__(self):
+ return ("\nUsage: tahoe [global-options] <command> [command-options]\n"
+ + self.getUsage())
+
+ synopsis = "\nUsage: tahoe [global-opts]" # used only for subcommands
def getUsage(self, **kwargs):
t = usage.Options.getUsage(self, **kwargs)
+ t = t.replace("Options:", "\nGlobal options:", 1)
return t + "\nPlease run 'tahoe <command> --help' for more details on each command.\n"
def postOptions(self):