REGISTRY := git.lclr.dev
SHELL    := /bin/bash

.DEFAULT_GOAL := help

docker\:build: ## Build les images en local
	docker compose build

docker\:push: ## Build et push les images vers le registry Gitea
	docker compose build
	docker compose push

docker\:pull: ## Pull les images depuis le registry Gitea
	docker compose pull

docker\:login: ## Connexion au registry Gitea
	docker login $(REGISTRY)

dev\:up: ## Démarre l'environnement de développement
	docker compose up --build -d

dev\:down: ## Arrête l'environnement de développement
	docker compose down

dev\:logs: ## Affiche les logs en temps réel
	docker compose logs -f

dev\:shell: ## Ouvre un shell dans le conteneur app
	docker compose exec app sh

prod\:up: ## Démarre en production (pull depuis le registry)
	docker compose -f docker-compose.yaml pull
	docker compose -f docker-compose.yaml up -d

prod\:down: ## Arrête la production
	docker compose -f docker-compose.yaml down

db\:migrate: ## Exécute les migrations Doctrine
	docker compose exec app php bin/console doctrine:migrations:migrate --no-interaction

db\:migration: ## Génère une nouvelle migration depuis les entités
	docker compose exec app php bin/console doctrine:migrations:diff --no-interaction

db\:reset: ## Recrée la base et rejoue les migrations (⚠ perd les données)
	docker compose exec app php bin/console doctrine:database:drop --force --no-interaction
	docker compose exec app php bin/console doctrine:database:create --no-interaction
	docker compose exec app php bin/console doctrine:migrations:migrate --no-interaction

symfony\:secrets-set: ## Ajoute un secret Symfony (ex: make symfony:secrets-set NAME="S3_ACCESS_KEY")
	docker compose exec app php bin/console secrets:set $(NAME)

symfony\:console: ## Lance une commande Symfony (ex: make symfony:console CMD="cache:clear")
	docker compose exec app php bin/console $(CMD)

symfony\:cache-clear: ## Vide le cache Symfony
	docker compose exec app php bin/console cache:clear

test: ## Lance les tests PHPUnit
	docker compose exec app php bin/phpunit

node\:shell: ## Ouvre un shell dans le conteneur node
	docker compose exec node sh

node\:install: ## Installe les dépendances npm
	docker compose exec node npm install

node\:build: ## Build les assets pour la production
	docker compose exec node npm run build

help: ## Affiche cette aide
	@grep -E '^[a-zA-Z_\\:-]+:.*## ' $(MAKEFILE_LIST) \
		| awk 'BEGIN {FS = "## "} {gsub(/\\:/, ":", $$1); sub(/:[^:]*$$/, "", $$1); printf "\033[36m%-25s\033[0m %s\n", $$1, $$2}'

