-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
196 lines (155 loc) · 6.09 KB
/
Makefile
File metadata and controls
196 lines (155 loc) · 6.09 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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
APP_NAME = split-fairly
VERSION = 0.1.5
.DEFAULT_GOAL := help
.PHONY: build prod start
help:
@echo "🏗️ Build & Setup:"
@echo " make start - Build development image, boot stack, initialize db, and open browser"
@echo " make dev - Build development Docker image"
@echo " make prod - Build production Docker images (app + web)"
@echo " make up - Boot the Docker Compose stack"
@echo " make down - Shut down the Docker Compose stack"
@echo " make init - Initialize app (composer, database, fixtures)"
@echo "\n🔄 Maintenance:"
@echo " make maintain - Update composer and npm dependencies"
@echo " make show-composer-updates - Show outdated composer packages"
@echo " make update-composer-dependencies - Update composer packages"
@echo " make update-npm-dependencies - Update npm packages"
@echo " make npm-install - Install npm packages and regenerate lock file (if it is outdated)"
@echo "\n🧪 Testing & Quality:"
@echo " make test - Run backend and frontend tests"
@echo " make quality - Run quality checks"
@echo " make phpstan - Run static code analysis"
@echo " make rector - Run rector code modernizer (dry-run)"
@echo " make rector-apply - Apply rector transformations"
@echo " make style - Fix code style"
@echo " make arch - Test architecture"
@echo " make coverage - Generate coverage report"
@echo "\n🛠️ Development:"
@echo " make shell - Open shell on app container"
@echo " make composer - Run composer command (use: make composer cmd='install')"
@echo " make npm-build - Create frontend build"
@echo " make clear - Clear all caches"
@echo " make open - Open application in browser\n"
start: dev up init open
dev:
@echo "🏗️ Building development image(s)..."
docker build . -f ./build/php/Dockerfile --target dev -t ${APP_NAME}-dev:${VERSION}
prod:
@echo "🛳️ Building procution image(s)..."
docker build . -f ./build/php/Dockerfile --target prod --no-cache -t ${APP_NAME}:${VERSION}
docker build . -f ./build/nginx/Dockerfile --no-cache -t ${APP_NAME}-web:${VERSION}
build: dev prod
up:
@echo "🚀 Booting Docker stack..."
docker compose up -d --remove-orphans
down:
@echo "⛔ Shutting down Docker stack..."
docker compose down
restart: reset
reset: reset-worker reset-app reset-npm-dev
reset-worker:
@echo "🔄 Resetting worker..."
docker compose restart worker
reset-app:
@echo "🔄 Resetting app..."
docker compose restart app
reset-npm-dev:
@echo "🔄 Resetting npm-dev..."
docker compose restart npm-dev
init: composer-install create-database create-schema load-fixtures
composer-install:
@echo "📦 Installing composer dependencies..."
docker compose exec -it app composer install
create-database:
@echo "🗄️ Creating database..."
docker compose exec -it app bin/console doctrine:database:create --if-not-exists
load-fixtures:
@echo "📥 Loading fixtures..."
docker compose exec -it app bin/console doctrine:fixtures:load -q
create-schema:
@echo "📐 Creating database schema..."
docker compose exec -it app bin/console doctrine:schema:update --force
init-test: create-test-database create-test-schema
create-test-database:
@echo "🗄️ Creating test database..."
docker compose exec -it app bin/console doctrine:database:create --env=test --if-not-exists
create-test-schema:
@echo "📐 Creating test database schema..."
docker compose exec -it app bin/console doctrine:schema:update --env=test --force
composer:
@echo "Run composer"
docker compose exec -it app composer $(cmd)
shell: shell-backend
shell-backend: backend-shell
backend-shell:
@echo "💻 Opening shell on app container..."
docker compose exec -it app bash
qa: quality
quality:
@echo "✅ Running quality checks..."
docker compose exec -it app composer qa
sa: phpstan
phpstan:
@echo "🔍 Running static code analysis..."
docker compose exec -it app vendor/bin/phpstan analyse --memory-limit=1G
rector:
@echo "♻️ Running rector (dry-run)..."
docker compose exec -it app /root/.composer/vendor/bin/rector process --dry-run
rector-apply:
@echo "♻️ Applying rector transformations..."
docker compose exec -it app /root/.composer/vendor/bin/rector process
cs: style
style: codestyle
codestyle: code-style
code-style:
@echo "💄 Fixing code style..."
docker compose exec -it app vendor/bin/php-cs-fixer fix
test: test-backend test-frontend
backend-test: test-backend
test-backend:
@echo "🧪 Running backend tests..."
docker compose exec -it app bin/phpunit
frontend-test: test-frontend
test-frontend:
@echo "🧪 Running frontend tests..."
docker compose exec -it npm-dev npm test -- --run
arch:
@echo "🏛️ Testing architecture..."
docker compose exec -it app vendor/bin/deptrac analyse --report-uncovered
clear:
@echo "🗑️ Clearing all caches..."
docker compose exec -it app composer clear
maintenance: maintain
maintain: show-composer-updates update-composer-dependencies update-npm-dependencies npm-install
show-composer-updates:
@echo "📊 Checking for outdated composer packages..."
docker compose exec -it app composer show --outdated
update-composer-dependencies:
@echo "📦 Updating composer dependencies..."
docker compose exec -it app composer update -W
update-npm-dependencies:
@echo "📦 Updating npm dependencies..."
docker compose exec -it npm-dev npm update --save
npm-install:
@echo "📦 Installing npm dependencies and regenerating lock file..."
docker compose exec -it npm-dev npm install
coverage:
@echo "📈 Generating coverage report..."
docker compose exec -it app bin/phpunit -c phpunit.xml.dist --coverage-html ./coverage
npm-build:
@echo "⚛️ Creating frontend build..."
docker compose exec -it npm-dev npm run build
open:
@if command -v xdg-open > /dev/null 2>&1; then \
xdg-open http://localhost:8000 2>/dev/null & \
elif command -v open > /dev/null 2>&1; then \
open http://localhost:8000; \
elif command -v wslview > /dev/null 2>&1; then \
wslview http://localhost:8000; \
elif command -v cmd.exe > /dev/null 2>&1; then \
cmd.exe /c start http://localhost:8000; \
else \
echo "❌ Could not detect browser launcher."; \
echo "📍 Please open http://localhost:8000 manually"; \
fi