.PHONY: help up down restart rebuild logs ps test lint phpstan arch cs-fix warmup frontend-lint frontend-test e2e clean shell bash console token token-alpha token-beta # Default target help: @echo "Classeo - Commandes disponibles" @echo "" @echo "Docker:" @echo " make up - Lancer tous les services" @echo " make down - Arreter tous les services" @echo " make restart - Redemarrer tous les services" @echo " make rebuild - Reconstruire et relancer les services" @echo " make build - Reconstruire les images" @echo " make logs - Voir les logs (Ctrl+C pour quitter)" @echo " make ps - Statut des services" @echo " make clean - Supprimer volumes et images" @echo "" @echo "Shell:" @echo " make shell - Shell bash dans le container PHP" @echo " make bash - Alias pour make shell" @echo " make console - Console Symfony (ex: make console c='debug:router')" @echo " make shell-frontend - Shell dans le container frontend" @echo "" @echo "Backend:" @echo " make phpstan - Analyse statique PHPStan" @echo " make arch - Tests d'architecture (PHPat)" @echo " make cs-fix - Correction code style PHP" @echo " make test-php - Tests PHPUnit" @echo " make warmup - Warmup du cache Symfony" @echo "" @echo "Frontend:" @echo " make lint - ESLint frontend" @echo " make test-js - Tests Vitest" @echo " make e2e - Tests Playwright" @echo "" @echo "All:" @echo " make test - Tous les tests" @echo " make check - Tous les linters" @echo "" @echo "Setup:" @echo " make jwt-keys - Generer les cles JWT (requis apres clone)" @echo "" @echo "Dev:" @echo " make token - Creer un token d'activation (interactif)" @echo " make token-alpha - Token sur ecole-alpha (+ email=, role=, minor=1)" @echo " make token-beta - Token sur ecole-beta (+ email=, role=, minor=1)" # ============================================================================= # Docker # ============================================================================= up: docker compose up -d down: docker compose down restart: docker compose down docker compose up -d rebuild: docker compose down docker compose build --no-cache docker compose up -d build: docker compose build --no-cache logs: docker compose logs -f ps: docker compose ps clean: docker compose down -v --rmi local # ============================================================================= # Shell # ============================================================================= shell: docker compose exec php sh bash: shell console: docker compose exec php php bin/console $(c) shell-frontend: docker compose exec frontend sh # ============================================================================= # Backend # ============================================================================= phpstan: docker compose exec php composer phpstan arch: docker compose exec php composer arch cs-fix: docker compose exec php composer cs-fix cs-check: docker compose exec php composer cs-check test-php: docker compose exec php composer test warmup: docker compose exec php php bin/console cache:warmup # ============================================================================= # Frontend # ============================================================================= lint: docker compose exec frontend pnpm run lint check-types: docker compose exec frontend pnpm run check test-js: docker compose exec frontend pnpm run test e2e: docker compose exec frontend pnpm run test:e2e # ============================================================================= # All # ============================================================================= test: test-php test-js check: phpstan cs-check lint check-types # ============================================================================= # Scripts # ============================================================================= check-bc: ./scripts/check-bc-isolation.sh check-naming: ./scripts/check-naming.sh check-tenants: ./scripts/check-tenants.sh # ============================================================================= # Dev helpers # ============================================================================= # Generer les cles JWT (a faire une seule fois apres clone) # Les cles sont gitignored pour la securite jwt-keys: @echo "Generation des cles JWT..." @docker compose exec php mkdir -p config/jwt @docker compose exec php openssl genpkey -out config/jwt/private.pem -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096 -pass pass:$${JWT_PASSPHRASE:-classeo_jwt_passphrase_change_me} @docker compose exec php openssl pkey -in config/jwt/private.pem -out config/jwt/public.pem -pubout -passin pass:$${JWT_PASSPHRASE:-classeo_jwt_passphrase_change_me} @echo "Cles JWT generees dans backend/config/jwt/" # Creer un token d'activation de test (mode interactif par defaut) # Usage: # make token - Mode interactif (pose des questions) # make token tenant=ecole-beta - Sur le tenant beta # make token role=PROF - Creer un prof # make token email=x@y.com role=ADMIN tenant=ecole-beta minor=1 # # Options: email, role (PARENT|ELEVE|PROF|ADMIN), tenant (ecole-alpha|ecole-beta), minor token: docker compose exec php php bin/console app:dev:create-test-activation-token \ $(if $(email),--email=$(email),) \ $(if $(role),--role=$(role),) \ $(if $(tenant),--tenant=$(tenant),) \ $(if $(minor),--minor,) \ --base-url=http://localhost:5174 # Raccourcis pour creer rapidement des tokens sur chaque tenant (non-interactif) token-alpha: docker compose exec -T php php bin/console app:dev:create-test-activation-token -n \ --tenant=ecole-alpha --base-url=http://ecole-alpha.classeo.local:5174 \ $(if $(email),--email=$(email),--email=alpha@test.com) \ $(if $(role),--role=$(role),) \ $(if $(minor),--minor,) token-beta: docker compose exec -T php php bin/console app:dev:create-test-activation-token -n \ --tenant=ecole-beta --base-url=http://ecole-beta.classeo.local:5174 \ $(if $(email),--email=$(email),--email=beta@test.com) \ $(if $(role),--role=$(role),) \ $(if $(minor),--minor,)