| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # Convenience wrappers for the dev/prod compose split. Targets are split
- # along the same axis as the compose files: anything `dev-*` uses the
- # overlay, anything else hits prod.
- COMPOSE_PROD = docker compose
- COMPOSE_DEV = docker compose -f docker-compose.yml -f docker-compose.dev.yml
- # Exported so the css-watcher service can run as the host user via
- # `user: "${HOST_UID}:${HOST_GID}"` in docker-compose.dev.yml. Files the
- # watcher writes into bind-mounted host paths (public/assets/css/app.css,
- # public/assets/js/vendor/*) then land with normal ownership.
- export HOST_UID := $(shell id -u)
- export HOST_GID := $(shell id -g)
- .PHONY: help dev dev-build dev-down prod prod-build prod-down \
- test lint check shell logs
- help:
- @echo "Dev:"
- @echo " make dev start dev stack (app + css-watcher) in foreground"
- @echo " make dev-build rebuild dev images"
- @echo " make dev-down stop and remove dev containers"
- @echo " make shell bash into the running app container"
- @echo " make logs tail logs from the dev stack"
- @echo ""
- @echo "Prod:"
- @echo " make prod start prod stack detached"
- @echo " make prod-build rebuild prod image"
- @echo " make prod-down stop and remove prod containers"
- @echo ""
- @echo "Checks (one-shot containers, no running stack required):"
- @echo " make lint php -l on src/ + tests/"
- @echo " make test phpunit"
- @echo " make check lint + test (used by /check skill)"
- # --- dev ----------------------------------------------------------------
- dev:
- $(COMPOSE_DEV) up
- dev-build:
- $(COMPOSE_DEV) build
- dev-down:
- $(COMPOSE_DEV) down
- shell:
- $(COMPOSE_DEV) exec app bash
- logs:
- $(COMPOSE_DEV) logs -f
- # --- prod ---------------------------------------------------------------
- prod:
- $(COMPOSE_PROD) up -d
- prod-build:
- $(COMPOSE_PROD) build
- prod-down:
- $(COMPOSE_PROD) down
- # --- checks (one-shot, profile=test) ------------------------------------
- # `run --rm` builds the tests image if needed, runs the command, and
- # tears the container down. Doesn't require `make dev` to be running.
- lint:
- $(COMPOSE_DEV) --profile test run --rm tests \
- sh -c 'find src tests -name "*.php" -print0 | xargs -0 -n1 -P 4 php -l > /dev/null && echo "lint: OK"'
- test:
- $(COMPOSE_DEV) --profile test run --rm tests
- check: lint test
|