import argparse import asyncio import json from .load_plan_tools import ( get_transport_vehicle_by_license_plate, list_unshipped_shipments, ) def _build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="Standalone CLI for load-plan API tools") subparsers = parser.add_subparsers(dest="command", required=True) vehicle_parser = subparsers.add_parser("vehicle", help="Fetch a vehicle by license plate") vehicle_parser.add_argument("--merchant-id", type=int, required=True) vehicle_parser.add_argument("--license-plate", required=True) shipments_parser = subparsers.add_parser("shipments", help="List unshipped shipments by area") shipments_parser.add_argument("--merchant-id", type=int, required=True) shipments_parser.add_argument("--area", required=True) shipments_parser.add_argument("--limit", type=int) shipments_parser.add_argument("--offset", type=int) return parser async def _run() -> None: parser = _build_parser() args = parser.parse_args() if args.command == "vehicle": result = await get_transport_vehicle_by_license_plate( merchant_id=args.merchant_id, license_plate=args.license_plate, ) else: result = await list_unshipped_shipments( merchant_id=args.merchant_id, area=args.area, limit=args.limit, offset=args.offset, ) print(json.dumps(result.model_dump(mode="json"), ensure_ascii=False, indent=2)) def main() -> None: asyncio.run(_run()) if __name__ == "__main__": main()