-import os, sys, urllib
+import os, sys, urllib, textwrap
import codecs
from twisted.python import usage
from allmydata.util.assertutil import precondition
from allmydata.util.encodingutil import unicode_to_url, quote_output, \
quote_local_unicode_path, argv_to_abspath
-from allmydata.util.fileutil import abspath_expanduser_unicode
-
-
-_default_nodedir = None
-if sys.platform == 'win32':
- from allmydata.windows import registry
- path = registry.get_base_dir_path()
- if path:
- precondition(isinstance(path, unicode), path)
- _default_nodedir = abspath_expanduser_unicode(path)
-
-if _default_nodedir is None:
- path = abspath_expanduser_unicode(u"~/.tahoe")
- precondition(isinstance(path, unicode), path)
- _default_nodedir = path
+from allmydata.scripts.default_nodedir import _default_nodedir
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
BasedirOptions.parseArgs(self, basedir)
def getSynopsis(self):
- return "Usage: %s [global-opts] %s [options] NODEDIR" % (self.command_name, self.subcommand_name)
+ return "Usage: %s [global-options] %s [options] NODEDIR" % (self.command_name, self.subcommand_name)
DEFAULT_ALIAS = u"tahoe"