SHELL := /bin/bash
PY ?= .venv/bin/python
SLUG := batch-nocturne
# Pas de `-include .env` + `export` : les variables passées en ligne de commande doivent l'emporter.
# Les scripts Python lisent .env eux-mêmes ; le Makefile n'en extrait que le projet.
PROJECT ?= $(or $(shell sed -n 's/^GOOGLE_CLOUD_PROJECT=//p' .env 2>/dev/null),$(GOOGLE_CLOUD_PROJECT))
REGION ?= europe-west1
MODEL ?= gemini-2.5-flash

.DEFAULT_GOAL := help
help: ## Liste les commandes
	@grep -hE '^[a-z0-9-]+:.*## ' Makefile | awk -F':.*## ' '{printf "  make %-13s %s\n", $$1, $$2}'

setup: ## Crée .venv et installe les dépendances
	@test -d .venv || python3 -m venv .venv
	@.venv/bin/pip install -q -r requirements.txt
	@test -f .env || cp .env.example .env
	@echo "Prêt. Renseignez .env puis : make test"

test: ## Tests sans clé ni réseau
	@$(PY) -m pytest -q

run: ## Lance une exécution du workflow pour DATE=AAAA-MM-JJ (après cloud-up et dépôt des fichiers)
	@GOOGLE_CLOUD_PROJECT=$(PROJECT) REGION=$(REGION) $(PY) e2e.py --date $${DATE:?précisez DATE=AAAA-MM-JJ}

e2e: ## Scénario complet sur Google Cloud : planification, reprise, idempotence, notification
	@GOOGLE_CLOUD_PROJECT=$(PROJECT) REGION=$(REGION) $(PY) e2e.py

cloud-up: ## Crée bucket, job Cloud Run, workflow, planification, Pub/Sub, comptes de service
	@PROJECT=$(PROJECT) REGION=$(REGION) MODEL=$(MODEL) infra/cloud-up.sh

cloud-down: ## Supprime toutes les ressources et vérifie qu'il n'en reste aucune
	@PROJECT=$(PROJECT) REGION=$(REGION) infra/cloud-down.sh

cloud-status: ## Liste les ressources du lab encore présentes
	@PROJECT=$(PROJECT) REGION=$(REGION) infra/cloud-status.sh

clean: ## Supprime les artefacts locaux
	@rm -rf sorties/ .pytest_cache
	@find . -name __pycache__ -type d -prune -exec rm -rf {} +
	@echo "Artefacts supprimés."

reset: clean ## Retour à l'état initial (garde .env)
	@rm -rf .venv
	@echo "Environnement supprimé (.env conservé)."
