From 26dbcec4093d945f312cc31b8a7b3063f578a277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 22 Feb 2021 22:18:27 +0100 Subject: [PATCH 1/5] Normalise the composer file structure --- composer.json | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index cb08795..5bac9d0 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,12 @@ { "name": "lcobucci/error-handling-middleware", - "description": "A PSR-15 middleware compatible with RFC 7807", "type": "library", + "description": "A PSR-15 middleware compatible with RFC 7807", + "keywords": [ + "PSR-15", + "RFC-7807", + "error handling" + ], "license": "MIT", "authors": [ { @@ -9,7 +14,6 @@ "email": "lcobucci@gmail.com" } ], - "keywords": ["PSR-15", "RFC-7807", "error handling"], "require": { "php": "^7.4 || ^8.0", "ext-json": "*", @@ -30,6 +34,10 @@ "phpstan/phpstan-strict-rules": "^0.12", "phpunit/phpunit": "^9.5" }, + "config": { + "preferred-install": "dist", + "sort-packages": true + }, "autoload": { "psr-4": { "Lcobucci\\ErrorHandling\\": "src" @@ -39,9 +47,5 @@ "psr-4": { "Lcobucci\\ErrorHandling\\Tests\\": "tests" } - }, - "config": { - "preferred-install": "dist", - "sort-packages": true } } From 7a3c4797012f72a0c8d1e70b1179d1dd6ea05d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 22 Feb 2021 22:19:39 +0100 Subject: [PATCH 2/5] Be explicit about dependency on psr/http-message --- composer.json | 1 + composer.lock | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5bac9d0..e43c614 100644 --- a/composer.json +++ b/composer.json @@ -20,6 +20,7 @@ "fig/http-message-util": "^1.1", "lcobucci/content-negotiation-middleware": "^3.0", "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", "psr/http-server-middleware": "^1.0", "psr/log": "^1.1" }, diff --git a/composer.lock b/composer.lock index 82cee31..461b644 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1ff5907d4bedb84d2a8abc193fb2a783", + "content-hash": "7337662b52bb6ea149d6f465e7696926", "packages": [ { "name": "fig/http-message-util", From a52b06944003681b20f55ad582a3af1782a624d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 22 Feb 2021 22:25:14 +0100 Subject: [PATCH 3/5] Require PHP 8.0 --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/mutation-tests.yml | 2 +- .github/workflows/phpunit.yml | 1 - .github/workflows/static-analysis.yml | 2 +- composer.json | 2 +- composer.lock | 18 +++++++++--------- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index f25fbe9..2d37dde 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "7.4" + - "8.0" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/mutation-tests.yml b/.github/workflows/mutation-tests.yml index ea2a036..4d25175 100644 --- a/.github/workflows/mutation-tests.yml +++ b/.github/workflows/mutation-tests.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "7.4" + - "8.0" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 725e641..f08840b 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -18,7 +18,6 @@ jobs: - "locked" - "development" php-version: - - "7.4" - "8.0" operating-system: - "ubuntu-latest" diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index db6068a..0663369 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -15,7 +15,7 @@ jobs: dependencies: - "locked" php-version: - - "7.4" + - "8.0" operating-system: - "ubuntu-latest" diff --git a/composer.json b/composer.json index e43c614..60b93de 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "php": "^7.4 || ^8.0", + "php": "^8.0", "ext-json": "*", "fig/http-message-util": "^1.1", "lcobucci/content-negotiation-middleware": "^3.0", diff --git a/composer.lock b/composer.lock index 461b644..7d7bb02 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7337662b52bb6ea149d6f465e7696926", + "content-hash": "5a1387045d83ba2d04689441a8bfa5be", "packages": [ { "name": "fig/http-message-util", @@ -1332,21 +1332,21 @@ }, { "name": "ocramius/package-versions", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "a7e35c34bc166a5684a1e2f13da7b1d6a821349d" + "reference": "f64411e9a63a35f8645d5fe04a9f55a2df2895c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a7e35c34bc166a5684a1e2f13da7b1d6a821349d", - "reference": "a7e35c34bc166a5684a1e2f13da7b1d6a821349d", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/f64411e9a63a35f8645d5fe04a9f55a2df2895c9", + "reference": "f64411e9a63a35f8645d5fe04a9f55a2df2895c9", "shasum": "" }, "require": { "composer-runtime-api": "^2.0.0", - "php": "^7.4.7 || ~8.0.0" + "php": "~8.0.0" }, "replace": { "composer/package-versions-deprecated": "*" @@ -1378,7 +1378,7 @@ "description": "Provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/Ocramius/PackageVersions/issues", - "source": "https://github.com/Ocramius/PackageVersions/tree/2.1.0" + "source": "https://github.com/Ocramius/PackageVersions/tree/2.3.0" }, "funding": [ { @@ -1390,7 +1390,7 @@ "type": "tidelift" } ], - "time": "2020-10-21T13:48:04+00:00" + "time": "2020-12-23T03:16:25+00:00" }, { "name": "ondram/ci-detector", @@ -5085,7 +5085,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.4 || ^8.0", + "php": "^8.0", "ext-json": "*" }, "platform-dev": [], From 4fb7a06eefa481fc2abcf80536efee7869d3c594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 22 Feb 2021 22:28:59 +0100 Subject: [PATCH 4/5] Be explicit about dependency on psr/http-server-handler --- composer.json | 1 + composer.lock | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 60b93de..cdfe022 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "lcobucci/content-negotiation-middleware": "^3.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", "psr/log": "^1.1" }, diff --git a/composer.lock b/composer.lock index 7d7bb02..26afd58 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5a1387045d83ba2d04689441a8bfa5be", + "content-hash": "0f9357a2e5ad6423ae134b59ff8fcb7a", "packages": [ { "name": "fig/http-message-util", From 79dde9c2f3e71ada3071899eeec82e64027760b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Cobucci?= Date: Mon, 22 Feb 2021 22:26:08 +0100 Subject: [PATCH 5/5] Add tooling to verify the composer file --- .github/workflows/composer-json-lint.yml | 67 ++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/composer-json-lint.yml diff --git a/.github/workflows/composer-json-lint.yml b/.github/workflows/composer-json-lint.yml new file mode 100644 index 0000000..97a46cb --- /dev/null +++ b/.github/workflows/composer-json-lint.yml @@ -0,0 +1,67 @@ +name: "Lint composer.json" + +on: + pull_request: + push: + +jobs: + coding-standards: + name: "Lint composer.json" + + runs-on: ${{ matrix.operating-system }} + + strategy: + matrix: + dependencies: + - "highest" + php-version: + - "8.0" + operating-system: + - "ubuntu-latest" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + php-version: "${{ matrix.php-version }}" + ini-values: memory_limit=-1 + tools: composer:v2, composer-normalize, composer-require-checker, composer-unused + + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: "Cache dependencies" + uses: "actions/cache@v2" + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.lock') }}" + restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" + + - name: "Install lowest dependencies" + if: ${{ matrix.dependencies == 'lowest' }} + run: "composer update --prefer-lowest --no-interaction --no-progress" + + - name: "Install highest dependencies" + if: ${{ matrix.dependencies == 'highest' }} + run: "composer update --no-interaction --no-progress" + + - name: "Install locked dependencies" + if: ${{ matrix.dependencies == 'locked' }} + run: "composer install --no-interaction --no-progress" + + - name: "Validate composer.json" + run: "composer validate --strict" + + - name: "Normalize composer.json" + run: "composer-normalize --dry-run" + + - name: "Check composer.json explicit dependencies" + run: "composer-require-checker check" + + - name: "Check composer.json unused dependencies" + run: "composer-unused"