50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
"""meshnet-gateway CLI entry point."""
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(
|
|
prog="meshnet-gateway",
|
|
description="Distributed Inference Network HTTP gateway",
|
|
)
|
|
subparsers = parser.add_subparsers(dest="command")
|
|
|
|
start_cmd = subparsers.add_parser("start", help="Start the gateway server")
|
|
route_group = start_cmd.add_mutually_exclusive_group()
|
|
route_group.add_argument("--tracker", default="http://localhost:8080", help="Tracker URL")
|
|
route_group.add_argument(
|
|
"--node-url",
|
|
help="Single node URL for local smoke tests instead of tracker routing",
|
|
)
|
|
start_cmd.add_argument("--port", type=int, default=8080, help="Port to listen on")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.command == "start":
|
|
from meshnet_gateway.server import GatewayServer
|
|
|
|
if args.node_url:
|
|
gateway = GatewayServer(node_url=args.node_url, port=args.port)
|
|
routing_label = f"Routing to node URL: {args.node_url}"
|
|
else:
|
|
gateway = GatewayServer(tracker_url=args.tracker, port=args.port)
|
|
routing_label = f"Tracker URL: {args.tracker}"
|
|
port = gateway.start()
|
|
print(f"meshnet-gateway listening on port {port}")
|
|
print(routing_label)
|
|
try:
|
|
import time
|
|
while True:
|
|
time.sleep(1)
|
|
except KeyboardInterrupt:
|
|
gateway.stop()
|
|
sys.exit(0)
|
|
else:
|
|
parser.print_help()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|