mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-02 03:06:41 +00:00
Add boiler plate for magic-folder subcommand
here we also: - add the synopsis for the create command - add the argument parser for the create command
This commit is contained in:
parent
b448905b50
commit
8f3c04ab8c
71
src/allmydata/scripts/magic_folder_cli.py
Normal file
71
src/allmydata/scripts/magic_folder_cli.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
from twisted.python import usage, failure
|
||||||
|
from allmydata.scripts.common import BaseOptions
|
||||||
|
from .common import BaseOptions, BasedirOptions
|
||||||
|
|
||||||
|
class CreateOptions(BasedirOptions):
|
||||||
|
nickname = None
|
||||||
|
localdir = None
|
||||||
|
def parseArgs(self, alias, nickname=None, localdir=None):
|
||||||
|
BasedirOptions.parseArgs(self)
|
||||||
|
self.alias = alias
|
||||||
|
self.nickname = nickname
|
||||||
|
self.localdir = localdir
|
||||||
|
if self.nickname and not self.localdir:
|
||||||
|
raise usage.UsageError("must provide both")
|
||||||
|
synopsis = "MAGIC_ALIAS: [NICKNAME LOCALDIR]"
|
||||||
|
|
||||||
|
def create(options):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class InviteOptions(BasedirOptions):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def invite(options):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class JoinOptions(BasedirOptions):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def join(options):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class MagicFolderCommand(BaseOptions):
|
||||||
|
subCommands = [
|
||||||
|
["create", None, CreateOptions, "Create a Magic-Folder."],
|
||||||
|
["invite", None, InviteOptions, "Invite someone to a Magic-Folder."],
|
||||||
|
["join", None, JoinOptions, "Join a Magic-Folder."],
|
||||||
|
]
|
||||||
|
def postOptions(self):
|
||||||
|
if not hasattr(self, 'subOptions'):
|
||||||
|
raise usage.UsageError("must specify a subcommand")
|
||||||
|
def getSynopsis(self):
|
||||||
|
return "Usage: tahoe [global-options] magic SUBCOMMAND"
|
||||||
|
def getUsage(self, width=None):
|
||||||
|
t = BaseOptions.getUsage(self, width)
|
||||||
|
t += """\
|
||||||
|
Please run e.g. 'tahoe magic-folder create --help' for more details on each
|
||||||
|
subcommand.
|
||||||
|
"""
|
||||||
|
return t
|
||||||
|
|
||||||
|
subDispatch = {
|
||||||
|
"create": create,
|
||||||
|
"invite": invite,
|
||||||
|
"join": join,
|
||||||
|
}
|
||||||
|
|
||||||
|
def do_magic_folder(options):
|
||||||
|
so = options.subOptions
|
||||||
|
so.stdout = options.stdout
|
||||||
|
so.stderr = options.stderr
|
||||||
|
f = subDispatch[options.subCommand]
|
||||||
|
return f(so)
|
||||||
|
|
||||||
|
subCommands = [
|
||||||
|
["magic-folder", None, MagicFolderCommand, "magic-folder subcommands: use 'tahoe magic-folder' for a list."],
|
||||||
|
]
|
||||||
|
|
||||||
|
dispatch = {
|
||||||
|
"magic-folder": do_magic_folder,
|
||||||
|
}
|
@ -5,7 +5,7 @@ from cStringIO import StringIO
|
|||||||
from twisted.python import usage
|
from twisted.python import usage
|
||||||
|
|
||||||
from allmydata.scripts.common import get_default_nodedir
|
from allmydata.scripts.common import get_default_nodedir
|
||||||
from allmydata.scripts import debug, create_node, startstop_node, cli, keygen, stats_gatherer, admin
|
from allmydata.scripts import debug, create_node, startstop_node, cli, keygen, stats_gatherer, admin, magic_folder_cli
|
||||||
from allmydata.util.encodingutil import quote_output, quote_local_unicode_path, get_io_encoding
|
from allmydata.util.encodingutil import quote_output, quote_local_unicode_path, get_io_encoding
|
||||||
|
|
||||||
def GROUP(s):
|
def GROUP(s):
|
||||||
@ -45,6 +45,7 @@ class Options(usage.Options):
|
|||||||
+ debug.subCommands
|
+ debug.subCommands
|
||||||
+ GROUP("Using the filesystem")
|
+ GROUP("Using the filesystem")
|
||||||
+ cli.subCommands
|
+ cli.subCommands
|
||||||
|
+ magic_folder_cli.subCommands
|
||||||
)
|
)
|
||||||
|
|
||||||
optFlags = [
|
optFlags = [
|
||||||
@ -143,6 +144,8 @@ def runner(argv,
|
|||||||
rc = admin.dispatch[command](so)
|
rc = admin.dispatch[command](so)
|
||||||
elif command in cli.dispatch:
|
elif command in cli.dispatch:
|
||||||
rc = cli.dispatch[command](so)
|
rc = cli.dispatch[command](so)
|
||||||
|
elif command in magic_folder_cli.dispatch:
|
||||||
|
rc = magic_folder_cli.dispatch[command](so)
|
||||||
elif command in ac_dispatch:
|
elif command in ac_dispatch:
|
||||||
rc = ac_dispatch[command](so, stdout, stderr)
|
rc = ac_dispatch[command](so, stdout, stderr)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user