-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
143 lines (108 loc) · 5.33 KB
/
Copy pathMakefile
File metadata and controls
143 lines (108 loc) · 5.33 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
# CKEditor 5 Editor Bundle — development (Docker + pnpm + PHPUnit).
.PHONY: help up down build shell install test test-coverage coverage-php-percent cs-check cs-fix qa clean assets assets-build assets-watch test-ts ensure-up rector rector-dry phpstan release-check release-check-demos composer-sync update validate validate-translations check-no-cursor-coauthor check-open-prs demo-smoke strip-cursor-coauthor-from-history setup-hooks check-twig-extra
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
help:
@echo "CKEditor 5 Editor Bundle - Development"
@echo " up / down / build / shell / install"
@echo " assets (pnpm install + build) | test-ts | test | test-coverage"
@echo " qa | release-check | make -C demo (symfony8) — /demo/variants for heights & themes"
@echo " check-open-prs (REQ-REL-003) | demo-smoke (REQ-TEST-011)"
@echo " Demos: make -C demo (see demo/README.md)"
build:
$(COMPOSE) build --no-cache
up:
$(COMPOSE) build
$(COMPOSE) up -d
@sleep 3
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction
$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install
@echo "Container ready."
down:
$(COMPOSE) down
ensure-up:
@if ! $(COMPOSE) exec -T $(SERVICE_PHP) true 2>/dev/null; then \
$(COMPOSE) up -d; sleep 3; \
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction; \
$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install; \
fi
shell:
$(COMPOSE) exec $(SERVICE_PHP) sh
install: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer install
$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install
assets: ensure-up
$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install
$(COMPOSE) exec -T $(SERVICE_PHP) pnpm run build
@echo "Assets: src/Resources/public/ckeditor5-editor.js"
assets-build: assets
assets-watch: ensure-up
$(COMPOSE) exec $(SERVICE_PHP) pnpm run watch
test-ts: ensure-up
$(COMPOSE) exec -T -e CI=true $(SERVICE_PHP) pnpm install --no-frozen-lockfile 2>/dev/null || true
$(COMPOSE) exec -T $(SERVICE_PHP) pnpm run test:coverage | tee coverage-ts.txt
sh .scripts/ts-coverage-percent.sh coverage-ts.txt
assets-test: test-ts
test: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction
$(COMPOSE) exec $(SERVICE_PHP) composer test
test-coverage: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer install --no-interaction
$(COMPOSE) exec $(SERVICE_PHP) composer test-coverage | tee coverage-php.txt
sh .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
validate-translations: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) php -r 'require "vendor/autoload.php"; foreach (glob("src/Resources/translations/*.yaml") as $$f) { Symfony\Component\Yaml\Yaml::parseFile($$f); } echo "OK\n";'
qa: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer qa
composer-sync: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
$(COMPOSE) exec -T $(SERVICE_PHP) composer update --lock --no-install --no-interaction
# REQ-GIT-001 — see docs/GITHUB_CI.md
check-no-cursor-coauthor:
@chmod +x .scripts/check-no-cursor-coauthor.sh
@./.scripts/check-no-cursor-coauthor.sh HEAD
# REQ-REL-003 — no unresolved open GitHub PRs before release
check-open-prs:
@chmod +x .scripts/check-open-prs.sh
@bash .scripts/check-open-prs.sh
# REQ-TEST-011 — demo boots and returns HTTP 200 (delegates to demo/release-verify)
demo-smoke:
@$(MAKE) -C demo release-verify
strip-cursor-coauthor-from-history:
@chmod +x .scripts/strip-cursor-coauthor-from-history.sh
@./.scripts/strip-cursor-coauthor-from-history.sh main
setup-hooks:
@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)."
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 test-coverage test-ts release-check-demos
release-check-demos:
@if [ -d demo ]; then $(MAKE) -C demo release-check; fi
clean:
rm -rf vendor node_modules .phpunit.cache coverage .php-cs-fixer.cache coverage-php.txt coverage-ts.txt
update: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer update --no-interaction
validate: ensure-up
$(COMPOSE) exec -T $(SERVICE_PHP) composer validate --strict
# 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
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