Skip to content

Commit eaa44bf

Browse files
authored
Align the tooling with the ecosystem standard. (#25)
1 parent 2436b18 commit eaa44bf

7 files changed

Lines changed: 38 additions & 46 deletions

File tree

‎.gitattributes‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
*.php text diff=php
44

5-
# Keep Claude tooling scripts out of GitHub's language statistics
6-
75
# Dev-only, excluded from the Packagist tarball
86
/.github export-ignore
97
/tests export-ignore

‎.github/PULL_REQUEST_TEMPLATE.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ Closes #...
1212

1313
- [ ] Tests added or updated.
1414
- [ ] Documentation updated when applicable.
15-
- [ ] `composer review` passes.
16-
- [ ] `composer tests` passes.
15+
- [ ] `make review` passes.
16+
- [ ] `make tests` passes.

‎.github/copilot-instructions.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
## Context
44

5-
PHP library (tiny-blocks). Immutable domain models, zero infrastructure dependencies in core.
5+
PHP library in the tiny-blocks ecosystem.
66

77
## Mandatory pre-task step
88

9-
Before starting any task, read and strictly follow all instruction files located in `.claude/CLAUDE.md` and
10-
`.claude/rules/`. These files are the absolute source of truth for code generation. Apply every rule strictly. Do not
11-
deviate from the patterns, folder structure, or naming conventions defined in them.
9+
Before starting any task, read and strictly follow `.claude/CLAUDE.md` and every rule file in
10+
`.claude/rules/`. These files are the absolute source of truth for code generation. Apply every
11+
rule strictly. Do not deviate from the patterns, folder structure, or naming conventions defined
12+
in them.

‎.github/workflows/ci.yml‎

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,43 +11,39 @@ permissions:
1111
contents: read
1212

1313
jobs:
14-
resolve-php-version:
15-
name: Resolve PHP version
14+
resolve-tooling-image:
15+
name: Resolve tooling image
1616
runs-on: ubuntu-latest
1717
timeout-minutes: 5
1818
outputs:
19-
php-version: ${{ steps.config.outputs.php-version }}
19+
php-image: ${{ steps.config.outputs.php-image }}
2020
steps:
2121
- name: Checkout
2222
uses: actions/checkout@v7
2323

24-
- name: Resolve PHP version from composer.json
24+
- name: Resolve tooling image from the Makefile
2525
id: config
26-
run: |
27-
version=$(jq -r '.require.php' composer.json | grep -oP '\d+\.\d+' | head -1)
28-
echo "php-version=$version" >> "$GITHUB_OUTPUT"
26+
run: echo "php-image=$(make show-image)" >> "$GITHUB_OUTPUT"
2927

3028
build:
3129
name: Build
32-
needs: resolve-php-version
30+
needs: resolve-tooling-image
3331
runs-on: ubuntu-latest
3432
timeout-minutes: 15
33+
env:
34+
image: ${{ needs.resolve-tooling-image.outputs.php-image }}
35+
workspace: /var/www/html
3536
steps:
3637
- name: Checkout
3738
uses: actions/checkout@v7
3839

39-
- name: Setup PHP
40-
uses: shivammathur/setup-php@v2
41-
with:
42-
tools: composer:2
43-
extensions: bcmath
44-
php-version: ${{ needs.resolve-php-version.outputs.php-version }}
45-
4640
- name: Validate composer.json
47-
run: composer validate --no-interaction
41+
run: docker run --rm -v "${PWD}":${{ env.workspace }} ${{ env.image }} composer validate --no-interaction
4842

4943
- name: Install dependencies
50-
run: composer install --no-progress --optimize-autoloader --prefer-dist --no-interaction
44+
run: >
45+
docker run --rm -v "${PWD}":${{ env.workspace }} ${{ env.image }}
46+
composer install --no-progress --optimize-autoloader --prefer-dist --no-interaction
5147
5248
- name: Upload vendor and composer.lock as artifact
5349
uses: actions/upload-artifact@v7
@@ -59,50 +55,36 @@ jobs:
5955
6056
auto-review:
6157
name: Auto review
62-
needs: [resolve-php-version, build]
58+
needs: [resolve-tooling-image, build]
6359
runs-on: ubuntu-latest
6460
timeout-minutes: 15
6561
steps:
6662
- name: Checkout
6763
uses: actions/checkout@v7
6864

69-
- name: Setup PHP
70-
uses: shivammathur/setup-php@v2
71-
with:
72-
tools: composer:2
73-
extensions: bcmath
74-
php-version: ${{ needs.resolve-php-version.outputs.php-version }}
75-
7665
- name: Download vendor artifact from build
7766
uses: actions/download-artifact@v8
7867
with:
7968
name: vendor-artifact
8069
path: .
8170

8271
- name: Run review
83-
run: composer review
72+
run: make review
8473

8574
tests:
8675
name: Tests
87-
needs: [resolve-php-version, auto-review]
76+
needs: [resolve-tooling-image, auto-review]
8877
runs-on: ubuntu-latest
8978
timeout-minutes: 15
9079
steps:
9180
- name: Checkout
9281
uses: actions/checkout@v7
9382

94-
- name: Setup PHP
95-
uses: shivammathur/setup-php@v2
96-
with:
97-
tools: composer:2
98-
extensions: bcmath
99-
php-version: ${{ needs.resolve-php-version.outputs.php-version }}
100-
10183
- name: Download vendor artifact from build
10284
uses: actions/download-artifact@v8
10385
with:
10486
name: vendor-artifact
10587
path: .
10688

10789
- name: Run tests
108-
run: composer tests
90+
run: make tests

‎Makefile‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ endif
88

99
TTY := $(shell [ -t 0 ] && echo -it)
1010

11-
DOCKER_RUN = docker run ${PLATFORM} --rm ${TTY} --net=host -v ${PWD}:/app -w /app gustavofreze/php:8.5-alpine
11+
PHP_VERSION := $(shell sed -n 's/.*"php": *"^\([0-9]*\.[0-9]*\)".*/\1/p' composer.json)
12+
IMAGE_VERSION := 1.0.0
13+
PHP_IMAGE := gustavofreze/php:${PHP_VERSION}-cli-${IMAGE_VERSION}
14+
WORKSPACE := /var/www/html
15+
16+
DOCKER_RUN = docker run ${PLATFORM} --rm ${TTY} --net=host -v ${PWD}:${WORKSPACE} ${PHP_IMAGE}
1217

1318
RESET := \033[0m
1419
GREEN := \033[0;32m
@@ -44,6 +49,10 @@ show-reports: ## Open coverage and mutation reports in the browser
4449
show-outdated: ## Show outdated direct dependencies
4550
@${DOCKER_RUN} composer outdated --direct
4651

52+
.PHONY: show-image
53+
show-image: ## Show the pinned PHP tooling image
54+
@echo ${PHP_IMAGE}
55+
4756
.PHONY: clean
4857
clean: ## Remove dependencies and generated artifacts
4958
@sudo chown -R ${USER}:${USER} ${PWD}
@@ -66,7 +75,7 @@ help: ## Display this help message
6675
| awk 'BEGIN {FS = ":.*?## "}; {printf "$(YELLOW)%-25s$(RESET) %s\n", $$1, $$2}'
6776
@echo ""
6877
@echo "$$(printf '$(GREEN)')Reports$$(printf '$(RESET)')"
69-
@grep -E '^(show-reports|show-outdated):.*?## .*$$' $(MAKEFILE_LIST) \
78+
@grep -E '^(show-reports|show-outdated|show-image):.*?## .*$$' $(MAKEFILE_LIST) \
7079
| awk 'BEGIN {FS = ":.*?## "}; {printf "$(YELLOW)%-25s$(RESET) %s\n", $$1, $$2}'
7180
@echo ""
7281
@echo "$$(printf '$(GREEN)')Cleanup$$(printf '$(RESET)')"

‎composer.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"ergebnis/composer-normalize": true,
5151
"infection/extension-installer": true
5252
},
53+
"process-timeout": 0,
5354
"sort-packages": true
5455
},
5556
"scripts": {

‎phpstan.neon.dist‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ parameters:
33
paths:
44
- src
55
- tests
6-
reportUnmatchedIgnoredErrors: true
6+
tmpDir: reports/phpstan
77
ignoreErrors:
88
# bcmath operates on numeric strings, which the native string type and the strpos cast do not express.
99
- identifier: argument.type
@@ -14,3 +14,4 @@ parameters:
1414
# hex2bin returns string or false, narrowed to a valid string by the fixed hexadecimal fixtures.
1515
- identifier: argument.type
1616
path: tests/Base62Test.php
17+
reportUnmatchedIgnoredErrors: true

0 commit comments

Comments
 (0)