-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
147 lines (115 loc) · 4.43 KB
/
Makefile
File metadata and controls
147 lines (115 loc) · 4.43 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
# Makefile for SelectAllChoiceBundle - development and QA (Docker)
COMPOSE_FILE := docker-compose.yml
COMPOSE := docker compose -f $(COMPOSE_FILE)
SERVICE_PHP := php
RUN := $(COMPOSE) exec -T $(SERVICE_PHP)
.PHONY: help up down shell install test test-coverage coverage-php-percent cs-check cs-fix qa clean ensure-up
.PHONY: release-check release-check-demos composer-sync assets build rector rector-dry phpstan update validate validate-translations
.PHONY: assets-test assets-dev assets-watch assets-clean
.PHONY: up-symfony7 up-symfony8 down-symfony7 down-symfony8
help:
@echo "SelectAllChoiceBundle - Development Commands (Docker)"
@echo ""
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@echo " up Start Docker container and install deps (PHP + TS)"
@echo " down Stop container"
@echo " build Rebuild Docker image (no cache)"
@echo " shell Open shell in container"
@echo " install Install Composer dependencies"
@echo " assets Build frontend (TypeScript via Vite; requires pnpm on host)"
@echo " test Run PHPUnit tests"
@echo " test-coverage Run tests with code coverage (PCOV, console)"
@echo " cs-check Check code style (PHP-CS-Fixer)"
@echo " cs-fix Fix code style"
@echo " rector Apply Rector refactoring"
@echo " rector-dry Rector dry-run (no changes)"
@echo " phpstan Run PHPStan static analysis"
@echo " qa Run all QA (cs-check + test)"
@echo " release-check Pre-release: composer-sync, cs-fix, cs-check, rector-dry, phpstan, test-coverage, release-check-demos"
@echo " composer-sync Validate composer.json and align composer.lock (no install)"
@echo " clean Remove vendor, cache, coverage"
@echo " update Update Composer dependencies"
@echo " validate Validate composer.json (composer validate --strict)"
@echo ""
@echo "Bundle-specific (assets):"
@echo " assets-test Run Vitest with coverage (goal 100%%, output in console)"
@echo " assets-dev Build assets in development mode"
@echo " assets-watch Watch assets for changes"
@echo " assets-clean Clean built assets"
@echo ""
@echo "Demos:"
@echo " (use make -C demo or make -C demo/symfonyX)"
@echo ""
ensure-up:
@if ! $(COMPOSE) exec -T $(SERVICE_PHP) true 2>/dev/null; then \
echo "Container not running. Starting docker compose..."; \
$(COMPOSE) up -d; \
sleep 2; \
fi
up:
$(COMPOSE) up -d
@sleep 3
@$(MAKE) install
@$(MAKE) assets
@echo "Ready. Run make shell to enter the container."
down:
$(COMPOSE) down
shell: ensure-up
$(COMPOSE) exec $(SERVICE_PHP) sh
install: ensure-up
$(RUN) composer install
# No -T so PHPUnit gets a TTY and can show colors in console
test: ensure-up
$(COMPOSE) exec $(SERVICE_PHP) composer test
test-coverage: ensure-up
$(COMPOSE) exec $(SERVICE_PHP) composer test-coverage | tee coverage-php.txt
./.scripts/php-coverage-percent.sh coverage-php.txt
cs-check: install
$(RUN) composer cs-check
cs-fix: install
$(RUN) composer cs-fix
qa: install
$(RUN) composer qa
rector: ensure-up
$(RUN) composer rector
rector-dry: ensure-up
$(RUN) composer rector-dry
phpstan: ensure-up
$(RUN) composer phpstan
update: ensure-up
$(RUN) composer update --no-interaction
validate: ensure-up
$(RUN) composer validate --strict
release-check: ensure-up composer-sync cs-fix cs-check rector-dry phpstan test-coverage assets-test release-check-demos
release-check-demos:
@$(MAKE) -C demo release-check
up-symfony7:
$(MAKE) -C demo/symfony7 up
up-symfony8:
$(MAKE) -C demo/symfony8 up
down-symfony7:
$(MAKE) -C demo/symfony7 down
down-symfony8:
$(MAKE) -C demo/symfony8 down
build:
$(COMPOSE) build --no-cache
composer-sync: ensure-up
$(RUN) composer validate --strict
$(RUN) composer update --no-install
clean: ensure-up
$(RUN) sh -c 'rm -rf vendor .phpunit.cache coverage coverage.xml .php-cs-fixer.cache'
assets: ensure-up
$(RUN) sh -lc 'CI=true pnpm install && CI=true pnpm build'
assets-test: ensure-up
$(RUN) sh -lc 'CI=true pnpm install && CI=true pnpm run test:coverage' | tee coverage-ts.txt
./scripts/ts-coverage-percent.sh coverage-ts.txt
assets-dev: ensure-up
$(RUN) sh -lc 'CI=true pnpm install && CI=true pnpm exec vite'
assets-watch: assets-dev
assets-clean:
rm -rf dist .vite node_modules/.vite 2>/dev/null || true
@echo "Assets build artifacts cleaned."
validate-translations: ensure-up
$(RUN) vendor/bin/yaml-lint src/Resources/translations