# Lancement de l'application en une commande.
#
#   make demo    → base + backend + frontend, jeu de démonstration chargé
#   make blank   → idem, mais édition vierge + 1er compte coordination
#   make down    → tout arrêter
#   make logs    → suivre les logs du backend
#
# `make blank` accepte des paramètres :
#   make blank EMAIL=moi@festival.fr PASSWORD=mon-mot-de-passe-solide \
#             NAME="Festival 2026" START=2026-07-01 END=2026-07-04

COMPOSE ?= docker compose
PSQL     = $(COMPOSE) exec -T db psql -U benevoles -tAc

NAME     ?= Mon festival
START    ?= 2026-07-01
END      ?= 2026-07-04
EMAIL    ?= coordination@example.org
PASSWORD ?= changez-ce-mot-de-passe

.PHONY: demo blank down logs help _up _wire-frontend

help:
	@sed -n '3,13p' Makefile

demo: _up
	$(COMPOSE) run --rm backend uv run python -m app.seed
	@$(MAKE) --no-print-directory _wire-frontend
	$(COMPOSE) up -d frontend
	@echo
	@echo "→ http://localhost:5173  (jeu de démonstration)"
	@echo "  Coordination : coordination@lucioles.test / coordination-lucioles-2026"

blank: _up
	$(COMPOSE) run --rm backend uv run python -m app.bootstrap \
		--name "$(NAME)" --start "$(START)" --end "$(END)" \
		--email "$(EMAIL)" --password "$(PASSWORD)"
	@$(MAKE) --no-print-directory _wire-frontend
	$(COMPOSE) up -d frontend
	@echo
	@echo "→ http://localhost:5173  (édition vierge)"
	@echo "  Connexion : $(EMAIL) / $(PASSWORD)"

down:
	$(COMPOSE) down

logs:
	$(COMPOSE) logs -f backend

# --- interne -------------------------------------------------------------------

.env:
	cp .env.example .env

_up: .env
	$(COMPOSE) up -d db backend
	$(COMPOSE) run --rm backend uv run alembic upgrade head

# Bascule le frontend sur l'API réelle et pointe sur la dernière édition créée.
_wire-frontend:
	@EID=$$($(PSQL) "select id from edition order by created_at desc limit 1" | tr -d '[:space:]'); \
	grep -v -E '^(VITE_API_MODE|VITE_EDITION_ID)=' .env > .env.tmp && mv .env.tmp .env; \
	printf 'VITE_API_MODE=http\nVITE_EDITION_ID=%s\n' "$$EID" >> .env; \
	echo "  .env : VITE_API_MODE=http  VITE_EDITION_ID=$$EID"
