-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
163 lines (112 loc) · 5.89 KB
/
Copy pathMakefile
File metadata and controls
163 lines (112 loc) · 5.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# ──────────────────────────────────────────────────
# Tarot — Makefile
# ──────────────────────────────────────────────────
# Raccourcis pour les commandes courantes.
# Usage : make <cible> (ex. make test, make lint)
# ──────────────────────────────────────────────────
include backend/.env
# Si ENV est défini, inclure le fichier d'environnement correspondant
ifdef ENV
ifneq ("$(wildcard backend/.env.$(ENV))","")
include backend/.env.$(ENV)
endif
endif
# .env.local prévaut toujours (chargé en dernier)
ifneq ("$(wildcard backend/.env.local)","")
include backend/.env.local
endif
.DEFAULT_GOAL := help
# ── Couleurs ──────────────────────────────────────
CYAN := \033[36m
GREEN := \033[32m
RESET := \033[0m
# ── Chemins ─────────────────────────────────────
BACK := backend
FRONT := frontend
# ── Workflows ─────────────────────────────────────
.PHONY: dev prod ci
dev: ## Premier lancement dev (dépendances + migrations)
$(MAKE) install
$(MAKE) db-migrate
prod: ## Déploiement prod (dépendances --no-dev + dump env + build + migrations + cache)
$(MAKE) install-back-prod install-front-prod
$(MAKE) dump-env APP_ENV=prod
$(MAKE) build db-migrate cc
ci: ## Intégration continue (lint + tests)
$(MAKE) lint
$(MAKE) test
# ── Installation ──────────────────────────────────
.PHONY: install install-back install-back-prod install-front install-front-prod dump-env
install: ## Installer toutes les dépendances (backend + frontend)
$(MAKE) install-back install-front
install-back: ## Installer les dépendances Composer
cd $(BACK) && composer install
install-back-prod: ## Installer les dépendances Composer (sans dev, optimisé)
cd $(BACK) && composer install --no-dev --optimize-autoloader
install-front: ## Installer les dépendances npm
cd $(FRONT) && npm install
install-front-prod: ## Installer les dépendances npm (prod, lockfile exact)
cd $(FRONT) && npm ci
dump-env: ## Compiler .env pour Symfony (utilise APP_ENV)
cd $(BACK) && composer dump-env $(APP_ENV)
# ── Base de données ───────────────────────────────
.PHONY: db-diff db-migrate db-reset
db-diff: ## Générer une migration Doctrine
$(MAKE) sf CMD="doctrine:migrations:diff -n"
db-migrate: ## Exécuter les migrations
$(MAKE) sf CMD="doctrine:migrations:migrate -n"
db-reset: ## Recréer la base de données et jouer les migrations
$(MAKE) sf CMD="doctrine:database:drop --force --if-exists"
$(MAKE) sf CMD="doctrine:database:create"
$(MAKE) sf CMD="doctrine:migrations:migrate -n"
# ── Tests ─────────────────────────────────────────
.PHONY: test test-back test-front
test: ## Lancer tous les tests (backend + frontend)
$(MAKE) test-back test-front
test-back: ## Lancer les tests PHPUnit
cd $(BACK) && vendor/bin/phpunit
test-front: ## Lancer les tests Vitest
cd $(FRONT) && npx vitest run
# ── Qualité de code ───────────────────────────────
.PHONY: lint lint-back lint-front phpstan cs cs-dry rector rector-dry
lint: ## Vérifier la qualité (PHPStan + CS Fixer dry-run + TypeScript)
$(MAKE) lint-back lint-front
lint-back: ## Vérifier le backend (PHPStan + CS Fixer dry-run)
$(MAKE) phpstan cs-dry
lint-front: ## Vérifier le frontend (TypeScript)
cd $(FRONT) && npx tsc --noEmit
phpstan: ## Lancer PHPStan (analyse statique PHP)
cd $(BACK) && vendor/bin/phpstan analyse
cs-dry: ## Vérifier le style PHP (dry-run, sans modifier)
cd $(BACK) && vendor/bin/php-cs-fixer fix --dry-run --diff
cs: ## Corriger le style PHP (modifie les fichiers)
cd $(BACK) && vendor/bin/php-cs-fixer fix
rector: ## Appliquer les refactorings Rector
cd $(BACK) && vendor/bin/rector process
rector-dry: ## Prévisualiser les refactorings Rector (dry-run)
cd $(BACK) && vendor/bin/rector process --dry-run
# ── Build ─────────────────────────────────────────
.PHONY: build serve-prod verify-build
build: ## Compiler le frontend pour la production
cd $(FRONT) && npm run build
serve-prod: ## Compiler et servir le build prod (port 4173)
$(MAKE) build
cd $(FRONT) && npx vite preview --host 0.0.0.0 --port 4173
verify-build: ## Vérifier que le build prod ne contient pas de code de debug
$(MAKE) build
@cd $(FRONT) && ! grep -q "ReactQueryDevtools" dist/assets/*.js \
&& printf " $(GREEN)✓$(RESET) Pas de ReactQueryDevtools dans le bundle\n" \
|| (printf " $(CYAN)✗$(RESET) ReactQueryDevtools trouvé dans le bundle !\n" && exit 1)
# ── Symfony ───────────────────────────────────────
.PHONY: cc sf
cc: ## Vider le cache Symfony
$(MAKE) sf CMD="cache:clear"
sf: ## Lancer une commande Symfony (usage : make sf CMD="debug:router")
cd $(BACK) && php bin/console $(CMD)
# ── Aide ──────────────────────────────────────────
.PHONY: help
help: ## Afficher cette aide
@printf "\n$(CYAN)Tarot$(RESET) — Commandes disponibles :\n\n"
@grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(RESET) %s\n", $$1, $$2}'
@printf "\n"