62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
from __future__ import print_function
|
|
import os, sys
|
|
from ..errors import TransferError
|
|
from ..timing import DebugTiming
|
|
from .cli_args import parser
|
|
|
|
def dispatch(args):
|
|
if args.func == "send/send":
|
|
from . import cmd_send
|
|
return cmd_send.send_twisted_sync(args)
|
|
if args.func == "receive/receive":
|
|
_start = args.timing.add_event("import c_r_t")
|
|
from . import cmd_receive
|
|
args.timing.finish_event(_start)
|
|
return cmd_receive.receive_twisted_sync(args)
|
|
|
|
raise ValueError("unknown args.func %s" % args.func)
|
|
|
|
def run(args, cwd, 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()
|
|
if not getattr(args, "func", None):
|
|
# So far this only works on py3. py2 exits with a really terse
|
|
# "error: too few arguments" during parse_args().
|
|
parser.print_help()
|
|
sys.exit(0)
|
|
args.cwd = cwd
|
|
args.stdout = stdout
|
|
args.stderr = stderr
|
|
args.timing = timing = DebugTiming()
|
|
|
|
try:
|
|
timing.add_event("command dispatch")
|
|
rc = dispatch(args)
|
|
timing.add_event("exit")
|
|
if args.dump_timing:
|
|
timing.write(args.dump_timing, stderr)
|
|
return rc
|
|
except TransferError as e:
|
|
print(e, file=stderr)
|
|
if args.dump_timing:
|
|
timing.write(args.dump_timing, stderr)
|
|
return 1
|
|
except ImportError as e:
|
|
print("--- ImportError ---", file=stderr)
|
|
print(e, file=stderr)
|
|
print("Please run 'python setup.py build'", file=stderr)
|
|
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:], os.getcwd(), sys.stdout, sys.stderr,
|
|
executable=sys.argv[0])
|
|
|
|
if __name__ == "__main__":
|
|
args = parser.parse_args()
|
|
print(args)
|