From 064740ef2ec8d95f795d551fb7ff34c920dc809a Mon Sep 17 00:00:00 2001 From: Shawn Date: Mon, 25 May 2026 00:29:56 -0400 Subject: [PATCH] feat: config-driven environments (env vars + start scripts) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add env var overrides matching main app pattern: - CANTEEN_IMPORT_PORT — port override (default 8091) - CANTEEN_IMPORT_DB_PATH — database path override - CANTEEN_IMPORT_SEED_DIR — seed data directory override - CANTEEN_IMPORT_UPLOAD_DIR — upload directory override Create start scripts in repo: - start.sh — production (default port 8091) - start-dev.sh — development (port 8093, assets.dev.db) Fix: dev clone now pulls from Gitea (not local prod dir) --- start-dev.sh | 15 +++++++++++++++ start.sh | 12 ++++++++++++ web/server.py | 19 +++++++++++++++---- 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100755 start-dev.sh create mode 100755 start.sh diff --git a/start-dev.sh b/start-dev.sh new file mode 100755 index 0000000..6128c04 --- /dev/null +++ b/start-dev.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# 🛠️ Start Seed Import — Development +set -euo pipefail + +cd "$(dirname "$0")" +PROJECT_DIR="$(pwd)" + +echo "🚀 Starting Seed Import (dev) on :8093..." +echo " DB: $PROJECT_DIR/seed-data/assets.dev.db" +echo "" + +export CANTEEN_IMPORT_PORT=8093 +export CANTEEN_IMPORT_DB_PATH="${PROJECT_DIR}/seed-data/assets.dev.db" + +exec python3 web/server.py diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..a96fc9c --- /dev/null +++ b/start.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# 🏭 Start Seed Import — Production +set -euo pipefail + +cd "$(dirname "$0")" +PROJECT_DIR="$(pwd)" + +echo "🚀 Starting Seed Import (prod) on port ${CANTEEN_IMPORT_PORT:-8091}..." +echo " DB: ${CANTEEN_IMPORT_DB_PATH:-$PROJECT_DIR/seed-data/assets.db}" +echo "" + +exec python3 web/server.py diff --git a/web/server.py b/web/server.py index df241ec..492fca0 100644 --- a/web/server.py +++ b/web/server.py @@ -79,9 +79,18 @@ def _list_backup_files() -> list[dict]: # ─── Config ────────────────────────────────────────────────────────────────── -DEFAULT_DB_PATH = str(PROJECT_ROOT / "seed-data" / "assets.db") -DEFAULT_SEED_DIR = str(PROJECT_ROOT / "seed-data") -UPLOAD_DIR = Path("/tmp/canteen-import-uploads") +DEFAULT_DB_PATH = os.environ.get( + "CANTEEN_IMPORT_DB_PATH", + str(PROJECT_ROOT / "seed-data" / "assets.db"), +) +DEFAULT_SEED_DIR = os.environ.get( + "CANTEEN_IMPORT_SEED_DIR", + str(PROJECT_ROOT / "seed-data"), +) +UPLOAD_DIR = Path(os.environ.get( + "CANTEEN_IMPORT_UPLOAD_DIR", + "/tmp/canteen-import-uploads", +)) REPORT_PATH = Path(DEFAULT_SEED_DIR) / "validation_report.md" HEADERS_FILE = Path(DEFAULT_SEED_DIR) / "headers_modified.csv" REFERENCE_FILE = Path(DEFAULT_SEED_DIR) / "reference_handbook.md" @@ -603,7 +612,9 @@ if __name__ == "__main__": import uvicorn parser = argparse.ArgumentParser(description="Canteen Seed Import Web Server") - parser.add_argument("--port", type=int, default=8091, help="Port to listen on") + parser.add_argument("--port", type=int, + default=int(os.environ.get("CANTEEN_IMPORT_PORT", "8091")), + help="Port to listen on") parser.add_argument("--host", type=str, default="0.0.0.0", help="Host to bind to") args = parser.parse_args()