93 lines
4.0 KiB
Python
93 lines
4.0 KiB
Python
import sys, argparse
|
|
from textwrap import dedent
|
|
from .. import public_relay
|
|
from .. import __version__
|
|
from . import cmd_send_text, cmd_receive_text, cmd_send_file, cmd_receive_file
|
|
|
|
parser = argparse.ArgumentParser(
|
|
usage="wormhole SUBCOMMAND (subcommand-options)",
|
|
description=dedent("""
|
|
Create a Magic Wormhole and communicate through it. Wormholes are created
|
|
by speaking the same magic CODE in two different places at the same time.
|
|
Wormholes are secure against anyone who doesn't use the same code."""),
|
|
)
|
|
parser.add_argument("--version", action="version",
|
|
version="magic-wormhole "+ __version__)
|
|
g = parser.add_argument_group("wormhole configuration options")
|
|
g.add_argument("--relay-url", default=public_relay.RENDEZVOUS_RELAY,
|
|
metavar="URL", help="rendezvous relay to use")
|
|
g.add_argument("--transit-helper", default=public_relay.TRANSIT_RELAY,
|
|
metavar="tcp:HOST:PORT", help="transit relay to use")
|
|
g.add_argument("-c", "--code-length", type=int, default=2,
|
|
metavar="WORDS", help="length of code (in bytes/words)")
|
|
g.add_argument("-v", "--verify", action="store_true",
|
|
help="display (and wait for acceptance of) verification string")
|
|
subparsers = parser.add_subparsers(title="subcommands",
|
|
dest="subcommand")
|
|
|
|
|
|
p = subparsers.add_parser("send-text", description="Send a text mesasge",
|
|
usage="wormhole send-text TEXT")
|
|
p.add_argument("text", metavar="TEXT", help="the message to send (a string)")
|
|
p.set_defaults(func=cmd_send_text.send_text)
|
|
|
|
p = subparsers.add_parser("receive-text", description="Receive a text message",
|
|
usage="wormhole receive-text [CODE]")
|
|
p.add_argument("code", nargs="?", default=None, metavar="[CODE]",
|
|
help=dedent("""\
|
|
The magic-wormhole code, from the sender. If omitted, the
|
|
program will ask for it, using tab-completion."""),
|
|
)
|
|
p.set_defaults(func=cmd_receive_text.receive_text)
|
|
|
|
p = subparsers.add_parser("send-file", description="Send a file",
|
|
usage="wormhole send-file FILENAME")
|
|
p.add_argument("filename", metavar="FILENAME", help="The file to be sent")
|
|
p.set_defaults(func=cmd_send_file.send_file)
|
|
|
|
p = subparsers.add_parser("receive-file", description="Receive a file",
|
|
usage="wormhole receive-file [-o FILENAME] [CODE]")
|
|
p.add_argument("-o", "--output-file", default=None, metavar="FILENAME",
|
|
help=dedent("""\
|
|
The file to create, overriding the filename suggested by the
|
|
sender"""),
|
|
)
|
|
p.add_argument("--overwrite", action="store_true",
|
|
help=dedent("""\
|
|
Allow the output file to be overwritten. By default, if the
|
|
output file already exists, the program will refuse to
|
|
overwrite it."""),
|
|
)
|
|
p.add_argument("code", nargs="?", default=None, metavar="[CODE]",
|
|
help=dedent("""\
|
|
The magic-wormhole code, from the sender. If omitted, the
|
|
program will ask for it, using tab-completion."""),
|
|
)
|
|
p.set_defaults(func=cmd_receive_file.receive_file)
|
|
|
|
|
|
def run(args, stdout, stderr, executable=None):
|
|
"""This is invoked directly by the 'wormhole' entry-point script. It can
|
|
also invoked by entry() below."""
|
|
|
|
args = parser.parse_args()
|
|
try:
|
|
#rc = command.func(args, stdout, stderr)
|
|
rc = args.func(args)
|
|
return rc
|
|
except ImportError, e:
|
|
print >>stderr, "--- ImportError ---"
|
|
print >>stderr, e
|
|
print >>stderr, "Please run 'python setup.py build'"
|
|
raise
|
|
return 1
|
|
|
|
def entry():
|
|
"""This is used by a setuptools entry_point. When invoked this way,
|
|
setuptools has already put the installed package on sys.path ."""
|
|
return run(sys.argv[1:], sys.stdout, sys.stderr, executable=sys.argv[0])
|
|
|
|
if __name__ == "__main__":
|
|
args = parser.parse_args()
|
|
print args
|