from __future__ import annotations import argparse from wsgiref.simple_server import make_server from .api import App from .store import Engine def main(argv: list[str] | None = None) -> int: parser = argparse.ArgumentParser(prog="approval-engine") sub = parser.add_subparsers(dest="cmd", required=True) serve = sub.add_parser("serve", help="serve the introspection API") serve.add_argument("--db", default="approvals.sqlite") serve.add_argument("--host", default="127.0.0.1") serve.add_argument("--port", type=int, default=8787) args = parser.parse_args(argv) if args.cmd == "serve": engine = Engine(args.db) httpd = make_server(args.host, args.port, App(engine)) print(f"approval-engine on http://{args.host}:{args.port} db={args.db}") httpd.serve_forever() return 0 return 2 if __name__ == "__main__": raise SystemExit(main())