mtg_python_deckbuilder/entrypoint.sh

44 lines
1.6 KiB
Bash

#!/usr/bin/env sh
set -e
# Seed default config files into /app/config if missing (handles first-run with mounted volume)
seed_defaults() {
# Ensure base config directory exists
mkdir -p /app/config /app/config/card_lists
# Copy from baked-in defaults if targets are missing
if [ -d "/.defaults/config" ]; then
# deck.json
[ -f /app/config/deck.json ] || cp "/.defaults/config/deck.json" "/app/config/deck.json" 2>/dev/null || true
# brackets.yml (power brackets) if present
[ -f /app/config/brackets.yml ] || { [ -f "/.defaults/config/brackets.yml" ] && cp "/.defaults/config/brackets.yml" "/app/config/brackets.yml"; } 2>/dev/null || true
# Copy any default card list JSONs that are missing (generic loop)
if [ -d "/.defaults/config/card_lists" ]; then
for f in /.defaults/config/card_lists/*.json; do
[ -f "$f" ] || continue
base=$(basename "$f")
[ -f "/app/config/card_lists/$base" ] || cp "$f" "/app/config/card_lists/$base" 2>/dev/null || true
done
fi
fi
}
seed_defaults
# Always operate from the code directory for imports to work
cd /app/code || exit 1
# Select mode: default to Web UI
MODE="${APP_MODE:-web}"
if [ "$MODE" = "cli" ]; then
# Run the CLI (interactive menu; use DECK_MODE=headless for non-interactive)
exec python main.py
fi
# Web UI (FastAPI via uvicorn)
HOST="${HOST:-0.0.0.0}"
PORT="${PORT:-8080}"
WORKERS="${WORKERS:-1}"
exec uvicorn web.app:app --host "$HOST" --port "$PORT" --workers "$WORKERS"