from __future__ import annotations import argparse from collections.abc import Sequence import uvicorn from sysadmin_env.server import app from sysadmin_env.server import create_app __all__ = ["app", "create_app", "main"] def main(argv: Sequence[str] | None = None) -> None: parser = argparse.ArgumentParser(description="Run the sysadmin-env OpenEnv-compatible server.") parser.add_argument("--host", default="0.0.0.0", help="Host interface to bind.") parser.add_argument("--port", type=int, default=8000, help="Port to listen on.") parser.add_argument("--reload", action="store_true", help="Enable auto-reload for development.") parser.add_argument( "--log-level", default="info", choices=["critical", "error", "warning", "info", "debug", "trace"], help="Uvicorn log level.", ) args = parser.parse_args(list(argv) if argv is not None else None) uvicorn.run( "server.app:app", host=args.host, port=args.port, reload=args.reload, log_level=args.log_level, ) if __name__ == "__main__": main()