-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
140 lines (110 loc) · 5.05 KB
/
Copy pathMakefile
File metadata and controls
140 lines (110 loc) · 5.05 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
# Makefile for Relative Time Bundle
# All dev targets use the root docker-compose.yml.
# Prefer Compose V2 plugin (GitHub Actions / modern Docker Desktop); fall back to docker-compose V1 (REQ-MAKE-010).
COMPOSE_FILE := docker-compose.yml
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 build shell install test test-coverage coverage-php-percent cs-check cs-fix qa clean release-check release-check-demos composer-sync rector rector-dry phpstan update validate validate-translations setup-hooks check-no-cursor-coauthor strip-cursor-coauthor-from-history
help:
@echo "Relative Time Bundle - Development Commands"
@echo ""
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@echo " up Start Docker container"
@echo " down Stop Docker container"
@echo " build Rebuild Docker image (no cache)"
@echo " shell Open shell in container"
@echo " install Install Composer dependencies"
@echo " assets No-op (no frontend in this bundle)"
@echo " test Run PHPUnit tests (starts container if needed)"
@echo " test-coverage Run tests with code coverage (starts container if needed)"
@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: check-no-cursor-coauthor, QA, demos"
@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 " update-deps Update bundle and demo Composer locks (Docker)"
@echo " validate Run composer validate --strict"
@echo " validate-translations Check translation key parity (7 locales)"
@echo " setup-hooks Install .githooks (REQ-GIT-001)"
@echo " check-no-cursor-coauthor Fail if Cursor co-author trailers in history"
@echo ""
@echo "Demos (Symfony 7/8): make -C demo help"
@echo ""
build:
$(COMPOSE) build --no-cache
up:
$(COMPOSE) build
$(COMPOSE) up -d
@echo "Installing dependencies..."
$(COMPOSE) exec $(SERVICE_PHP) composer install --no-interaction
@echo "✅ Container ready!"
down:
$(COMPOSE) down
shell:
$(COMPOSE) exec $(SERVICE_PHP) sh
install: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer install
@echo "✅ Dependencies installed."
ensure-up:
@if ! $(COMPOSE) exec -T $(SERVICE_PHP) true 2>/dev/null; then \
echo "Starting container (root docker-compose)..."; \
$(COMPOSE) up -d; \
sleep 3; \
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction; \
fi
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: 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
update: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer update --no-interaction
validate: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
validate-translations: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) php .scripts/validate-translation-keys.php
release-check: check-no-cursor-coauthor ensure-up composer-sync cs-fix cs-check rector-dry phpstan test-coverage validate-translations release-check-demos
release-check-demos:
@$(MAKE) -C demo release-check
composer-sync: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
$(COMPOSE) exec -T $(SERVICE_PHP) composer update --no-install
clean: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) sh -c "rm -rf vendor .phpunit.cache coverage coverage.xml .php-cs-fixer.cache"
assets:
@echo "No frontend assets in this bundle."
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)."
# REQ-MAKE-008: update-deps (REQ-MAKE-008)
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
check-no-cursor-coauthor:
@chmod +x .scripts/check-no-cursor-coauthor.sh
@./.scripts/check-no-cursor-coauthor.sh HEAD
strip-cursor-coauthor-from-history:
@chmod +x .scripts/strip-cursor-coauthor-from-history.sh
@./.scripts/strip-cursor-coauthor-from-history.sh main