Files
pigway-frame-flow/scripts/run_local.py

45 lines
1.2 KiB
Python

"""Start a loopback-only demo. Generate a private .env if absent; no cloud writes."""
import os
import secrets
import subprocess
import sys
from datetime import UTC, datetime
from pathlib import Path
import uvicorn
root = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(root))
env = root / ".env"
if not env.exists():
text = (
(root / ".env.example")
.read_text()
.replace(
"FRAME_FLOW_TOKEN=\n",
"FRAME_FLOW_TOKEN=" + secrets.token_urlsafe(32) + "\n",
)
)
env.write_text(text)
env.chmod(0o600)
for line in env.read_text().splitlines():
if "=" in line and not line.startswith("#"):
key, value = line.split("=", 1)
os.environ.setdefault(key, value)
os.environ["DATA_DIR"] = str(root / "data")
os.environ["CONFIG_DIR"] = str(root / "config")
os.environ["KOKONNA_MOCK"] = "true"
os.environ["KOKONNA_WRITE_ENABLED"] = "false"
os.environ["BUILD_COMMIT"] = (
subprocess.run(
["git", "rev-parse", "HEAD"], cwd=root, capture_output=True, text=True
).stdout.strip()
or "development"
)
os.environ["BUILD_TIME"] = datetime.now(UTC).isoformat()
uvicorn.run(
"pigway_frame_flow.main:app", host="127.0.0.1", port=18787, access_log=False
)