Keep source, config, and deploy files. Leave runtime data, uploads, and logs out of git. Co-authored-by: Cursor <cursoragent@cursor.com>
84 lines
2.5 KiB
Python
84 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import os
|
|
|
|
from kamidso.settings.paths import DEFAULT_ENGINE_CONFIG
|
|
|
|
|
|
def _add_serve_args(parser: argparse.ArgumentParser) -> None:
|
|
parser.add_argument("--host", default=os.environ.get("KAMIDSO_HOST", "127.0.0.1"))
|
|
parser.add_argument(
|
|
"--port",
|
|
type=int,
|
|
default=int(os.environ.get("KAMIDSO_PORT", "5670")),
|
|
)
|
|
parser.add_argument(
|
|
"--config",
|
|
"-c",
|
|
default=os.environ.get("KAMIDSO_ENGINE_CONFIG", DEFAULT_ENGINE_CONFIG),
|
|
help=f"Engine TOML config (default: {DEFAULT_ENGINE_CONFIG})",
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
from kamidso.bootstrap.env_file import load_app_env
|
|
from kamidso.bootstrap.workspace_path import ensure_workspace_packages
|
|
|
|
ensure_workspace_packages()
|
|
load_app_env()
|
|
|
|
parser = argparse.ArgumentParser(prog="kamidso", description="Kamidso product server")
|
|
sub = parser.add_subparsers(dest="command")
|
|
|
|
serve = sub.add_parser("serve", help="Run Kamidso API server")
|
|
_add_serve_args(serve)
|
|
serve.add_argument("--reload", action="store_true")
|
|
|
|
dev = sub.add_parser("dev", help="Alias for kamidso serve with reload")
|
|
_add_serve_args(dev)
|
|
|
|
args = parser.parse_args()
|
|
if args.command in {None, "serve", "dev"}:
|
|
from kamidso.bootstrap.preflight import format_preflight_error, missing_engine_dependencies
|
|
|
|
missing = missing_engine_dependencies()
|
|
if missing:
|
|
raise SystemExit(format_preflight_error(missing))
|
|
|
|
import logging
|
|
|
|
import uvicorn
|
|
|
|
from kamidso.settings.paths import resolve_config_path
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s %(levelname)s %(name)s %(message)s",
|
|
)
|
|
|
|
config_path = resolve_config_path(
|
|
getattr(args, "config", None) or DEFAULT_ENGINE_CONFIG
|
|
)
|
|
os.environ["KAMIDSO_ENGINE_CONFIG"] = config_path
|
|
|
|
host = getattr(args, "host", os.environ.get("KAMIDSO_HOST", "127.0.0.1"))
|
|
port = int(getattr(args, "port", os.environ.get("KAMIDSO_PORT", "5670")))
|
|
reload = getattr(args, "reload", False) or args.command == "dev"
|
|
uvicorn.run(
|
|
"kamidso.api.app:create_fastapi_app",
|
|
factory=True,
|
|
host=host,
|
|
port=port,
|
|
reload=reload,
|
|
timeout_keep_alive=75,
|
|
log_level="info",
|
|
access_log=True,
|
|
)
|
|
else:
|
|
parser.error(f"Unknown command: {args.command}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|