subCommands = [
- ["create-client", None, CreateClientOptions, "Create a client node."],
- ["create-introducer", None, CreateIntroducerOptions, "Create a introducer node."],
-
+ ["create-node", None, CreateNodeOptions, "Create a node that acts as a client, server or both."],
+ ["create-client", None, CreateClientOptions, "Create a client node (with storage initially disabled)."],
+ ["create-introducer", None, CreateIntroducerOptions, "Create an introducer node."],
]
dispatch = {
from allmydata.scripts.common import BaseOptions
import debug, create_node, startstop_node, cli, keygen, stats_gatherer
-_general_commands = ( create_node.subCommands
- + keygen.subCommands
- + stats_gatherer.subCommands
- + debug.subCommands
- + cli.subCommands
- )
+def group(s):
+ return [["\n" + s, None, None, None]]
+
+_commandUsage = ( group("Administration")
+ + create_node.subCommands
+ + keygen.subCommands
+ + stats_gatherer.subCommands
+ + group("Controlling a node")
+ + startstop_node.subCommands
+ + group("Debugging")
+ + debug.subCommands
+ + group("Using the filesystem")
+ + cli.subCommands
+ )
+
+_subCommands = filter(lambda (a, b, c, d): not a.startswith("\n"), _commandUsage)
+_synopsis = "Usage: tahoe <command> [command options]"
class Options(BaseOptions, usage.Options):
- synopsis = "Usage: tahoe <command> [command options]"
+ synopsis = _synopsis
+ subCommands = _subCommands
- subCommands = []
- subCommands += _general_commands
- subCommands += startstop_node.subCommands
+ def getUsage(self, **kwargs):
+ t = _Usage().getUsage(**kwargs)
+ return t + "\nPlease run 'tahoe <command> --help' for more details on each command.\n"
def postOptions(self):
if not hasattr(self, 'subOptions'):
raise usage.UsageError("must specify a command")
+class _Usage(BaseOptions, usage.Options):
+ synopsis = _synopsis
+ subCommands = _commandUsage
+
def runner(argv,
run_by_human=True,
stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr,