2015-03-22 23:52:35 +00:00
|
|
|
import sys, argparse
|
|
|
|
from textwrap import dedent
|
2015-03-22 18:55:13 +00:00
|
|
|
from .. import public_relay
|
2015-03-22 23:52:35 +00:00
|
|
|
from .. import __version__
|
|
|
|
from . import cmd_send_text, cmd_receive_text, cmd_send_file, cmd_receive_file
|
2015-03-02 08:32:21 +00:00
|
|
|
|
2015-03-22 23:52:35 +00:00
|
|
|
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")
|
|
|
|
subparsers = parser.add_subparsers(title="subcommands",
|
|
|
|
dest="subcommand")
|
2015-03-02 08:32:21 +00:00
|
|
|
|
|
|
|
|
2015-03-22 23:52:35 +00:00
|
|
|
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)
|
2015-03-02 08:32:21 +00:00
|
|
|
|
2015-03-22 23:52:35 +00:00
|
|
|
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)
|
2015-03-02 08:32:21 +00:00
|
|
|
|
2015-03-22 23:52:35 +00:00
|
|
|
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)
|
2015-03-02 08:32:21 +00:00
|
|
|
|
2015-03-22 23:52:35 +00:00
|
|
|
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("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)
|
2015-03-02 08:32:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
def run(args, stdout, stderr, executable=None):
|
|
|
|
"""This is invoked directly by the 'wormhole' entry-point script. It can
|
|
|
|
also invoked by entry() below."""
|
2015-03-22 23:52:35 +00:00
|
|
|
|
|
|
|
args = parser.parse_args()
|
2015-03-02 08:32:21 +00:00
|
|
|
try:
|
2015-03-22 23:52:35 +00:00
|
|
|
#rc = command.func(args, stdout, stderr)
|
|
|
|
rc = args.func(args)
|
2015-03-02 08:32:21 +00:00
|
|
|
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])
|
2015-03-22 23:52:35 +00:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
args = parser.parse_args()
|
|
|
|
print args
|