-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
164 lines (130 loc) · 5.82 KB
/
Copy pathMakefile
File metadata and controls
164 lines (130 loc) · 5.82 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
# Makefile for Phone Input Bundle
# All dev targets use the root docker-compose.yml (single file).
COMPOSE_FILE := docker-compose.yml
# Prefer Compose V2 plugin (GitHub Actions / modern Docker Desktop); fall back to docker-compose V1 (REQ-MAKE-010).
COMPOSE_BIN := $(shell docker compose version >/dev/null 2>&1 && echo "docker compose" || echo "docker-compose")
COMPOSE := $(COMPOSE_BIN) -f $(COMPOSE_FILE)
SERVICE_PHP := php
.PHONY: help up down down-dev build shell install test test-coverage coverage-check coverage-php-percent cs-check cs-fix rector rector-dry phpstan qa release-check release-check-demos demo-smoke composer-sync clean update validate assets setup-hooks update-deps update-deps-demos update-deps-all check-no-cursor-coauthor check-open-prs strip-cursor-coauthor-from-history check-twig-extra
help:
@echo "Phone Input Bundle - Development Commands"
@echo ""
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@echo " up Start Docker container"
@echo " down Stop Docker container"
@echo " down-dev Stop containers (keep volumes; REQ-MAKE-007)"
@echo " build Rebuild Docker image (no cache)"
@echo " shell Open shell in container"
@echo " install Install Composer dependencies (starts container if needed)"
@echo " test Run PHPUnit tests"
@echo " test-coverage Run tests with code coverage"
@echo " coverage-check test-coverage + fail if lines < 99%"
@echo " cs-check Check code style"
@echo " cs-fix Fix code style"
@echo " rector Apply Rector refactoring"
@echo " rector-dry Run Rector in dry-run mode"
@echo " phpstan Run PHPStan static analysis"
@echo " qa Run all QA checks (cs-check + test)"
@echo " release-check Pre-release: open PRs, cs, phpstan, coverage-check, demos"
@echo " demo-smoke Demo healthchecks (release-verify)"
@echo " check-open-prs Fail if unresolved open PRs (REQ-REL-003)"
@echo " composer-sync Validate composer.json and align composer.lock (no install)"
@echo " clean Remove vendor and cache"
@echo " update Update composer.lock (composer update)"
@echo " validate Run composer validate --strict"
@echo " assets No-op (public CSS installed via assets:install + named package)"
@echo " setup-hooks Install git pre-commit hooks"
@echo ""
@echo "Demos: use make -C demo or make -C demo/<demo-name>"
@echo ""
build:
$(COMPOSE) build --no-cache
up:
$(COMPOSE) build
$(COMPOSE) up -d
@echo "Waiting for container to be ready..."
@sleep 2
@echo "Installing dependencies..."
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction
@echo "Container ready."
down:
$(COMPOSE) down
# Stop containers without removing volumes (REQ-MAKE-007)
down-dev:
$(COMPOSE) down --remove-orphans
shell: ensure-up
$(COMPOSE) exec $(SERVICE_PHP) sh
ensure-up:
@if ! $(COMPOSE) exec -T $(SERVICE_PHP) true 2>/dev/null; then \
echo "Starting container..."; \
$(COMPOSE) up -d; \
sleep 3; \
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction; \
fi
install: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer install
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
coverage-check: test-coverage
@chmod +x .scripts/coverage-fail-under.sh
@./.scripts/coverage-fail-under.sh coverage-php.txt 99
cs-check: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer cs-check
cs-fix: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer cs-fix
rector: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer rector
rector-dry: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer rector-dry
phpstan: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer phpstan
qa: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer qa
check-open-prs:
@chmod +x .scripts/check-open-prs.sh
@GH_REPO=nowo-tech/PhoneInputBundle ./.scripts/check-open-prs.sh
demo-smoke:
@if [ -f demo/Makefile ]; then $(MAKE) -C demo release-verify; else echo "No demo/Makefile"; exit 1; fi
check-twig-extra:
@chmod +x .scripts/check-twig-extra.sh
@./.scripts/check-twig-extra.sh
release-check: check-no-cursor-coauthor check-open-prs check-twig-extra ensure-up composer-sync cs-fix cs-check rector-dry phpstan coverage-check release-check-demos
release-check-demos:
@if [ -f demo/Makefile ]; then $(MAKE) -C demo release-check; else true; fi
composer-sync: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
$(COMPOSE) exec -T $(SERVICE_PHP) composer update --lock --no-install
clean:
rm -rf vendor
rm -rf .phpunit.cache
rm -rf coverage
rm -f coverage.xml
rm -f coverage-php.txt
rm -f .php-cs-fixer.cache
update: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer update
validate: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
assets:
@echo "No frontend assets in this bundle."
check-no-cursor-coauthor:
@chmod +x .scripts/check-no-cursor-coauthor.sh
@./.scripts/check-no-cursor-coauthor.sh HEAD
setup-hooks:
@chmod +x .githooks/pre-commit 2>/dev/null || true
@chmod +x .githooks/commit-msg 2>/dev/null || true
@git config core.hooksPath .githooks
@echo "✅ Git hooks installed (.githooks — includes commit-msg for REQ-GIT-001)."
BUNDLE_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
# Optional: monorepo helper absent on standalone GitHub Actions checkout (REQ-MAKE-009).
-include $(BUNDLE_ROOT)/../.scripts/Makefile.update-deps.mk
strip-cursor-coauthor-from-history:
@chmod +x .scripts/strip-cursor-coauthor-from-history.sh
@./.scripts/strip-cursor-coauthor-from-history.sh main
twig-lint: ensure-up
@$(COMPOSE) exec -T $(SERVICE_PHP) composer twig:lint || $(COMPOSE) exec -T $(SERVICE_PHP) ./vendor/bin/twig-cs-fixer lint --config=.twig-cs-fixer.php