| 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() |
|
|