diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 02261820..3908cfca 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -233,13 +233,13 @@ jobs: run: make build-docker - name: Test help and logo - run: time docker run --rm jbzoo/csv-blueprint-local --ansi + run: time docker run --rm jbzoo/csv-blueprint:local --ansi - name: 👍 Valid CSV file run: | time docker run --rm \ -v `pwd`:/parent-host \ - jbzoo/csv-blueprint-local \ + jbzoo/csv-blueprint:local \ validate:csv \ --csv=/parent-host/tests/fixtures/demo.csv \ --schema=/parent-host/tests/schemas/demo_valid.yml \ @@ -249,7 +249,7 @@ jobs: run: | ! docker run --rm \ -v `pwd`:/parent-host \ - jbzoo/csv-blueprint-local \ + jbzoo/csv-blueprint:local \ validate:csv \ --csv=/parent-host/tests/fixtures/demo.csv \ --schema=/parent-host/tests/schemas/invalid_schema.yml \ diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index 6992e8a8..8c48a89a 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -13,16 +13,16 @@ name: Publish Docker on: - push: - branches: - - 'master' + release: + types: [ created ] jobs: docker: - name: Docker + name: Publish Docker runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -39,6 +39,11 @@ jobs: - name: Build and push uses: docker/build-push-action@v5 with: - context: . push: true - tags: jbzoo/csv-blueprint:latest + context: . + file: ./docker/Dockerfile + tags: jbzoo/csv-blueprint:${{ github.event.release.tag_name }} + platforms: linux/amd64,linux/arm64/v8,linux/386, + + - name: Verify the Docker image + run: docker run --rm jbzoo/csv-blueprint:${{ github.event.release.tag_name }} diff --git a/Makefile b/Makefile index 1be48d10..7cc71451 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ .PHONY: build REPORT ?= table -COLUMNS ?= 150 +COLUMNS ?= 300 ifneq (, $(wildcard ./vendor/jbzoo/codestyle/src/init.Makefile)) include ./vendor/jbzoo/codestyle/src/init.Makefile @@ -27,26 +27,23 @@ build: ##@Project Install all 3rd party dependencies @rm -f `pwd`/ci-report-converter -build-install: ##@Project Install all 3rd party dependencies as prod - $(call title,"Install/Update all 3rd party dependencies as prod") - @composer install --no-dev --no-progress --no-interaction --no-suggest --optimize-autoloader - @rm -f `pwd`/ci-report-converter - - update: ##@Project Install/Update all 3rd party dependencies @echo "Composer flags: $(JBZOO_COMPOSER_UPDATE_FLAGS)" @composer update $(JBZOO_COMPOSER_UPDATE_FLAGS) @make build-phar -test-all: ##@Project Run all project tests at once - @make test - @make codestyle +build-install: ##@Project Install all 3rd party dependencies as prod + $(call title,"Install/Update all 3rd party dependencies as prod") + @composer install --no-dev --classmap-authoritative + @rm -f `pwd`/ci-report-converter + +# Demo ################################################################################################################# -build-docker: - $(call title,"Building Docker Image") - @docker build -t jbzoo/csv-blueprint-local . +demo: ##@Project Run all demo commands + @make demo-valid + @make demo-invalid demo-valid: ##@Project Run demo valid CSV @@ -56,25 +53,6 @@ demo-valid: ##@Project Run demo valid CSV --schema=./tests/schemas/demo_valid.yml \ --skip-schema -v -demo-docker: ##@Project Run demo via Docker - $(call title,"Demo - Valid CSV \(via Docker\)") - @docker run --rm \ - -v `pwd`:/parent-host \ - jbzoo/csv-blueprint \ - validate:csv \ - --csv=/parent-host/tests/fixtures/demo.csv \ - --schema=/parent-host/tests/schemas/demo_valid.yml \ - --ansi -vvv - $(call title,"Demo - Invalid CSV \(via Docker\)") - @docker run --rm \ - -v `pwd`:/parent-host \ - jbzoo/csv-blueprint \ - validate:csv \ - --csv=/parent-host/tests/fixtures/demo.csv \ - --schema=/parent-host/tests/schemas/demo_invalid.yml \ - --ansi -vvv - - demo-invalid: ##@Project Run demo invalid CSV $(call title,"Demo - Invalid CSV") @${PHP_BIN} ./csv-blueprint validate:csv \ @@ -91,12 +69,31 @@ demo-github: ##@Project Run demo invalid CSV --ansi -demo: ##@Project Run all demo commands - @make demo-valid - @make demo-invalid +# Docker ############################################################################################################### +build-docker: + $(call title,"Building Docker Image") + @docker build -f ./docker/Dockerfile -t jbzoo/csv-blueprint:local . + + +docker-in: + @docker run -it --entrypoint /bin/sh jbzoo/csv-blueprint:local -preload: ##@Project Preload all classes - @${PHP_BIN} ./vendor/bin/classpreloader compile \ - --config=./docker/preload-config.php \ - --output=./docker/preload.php + +demo-docker: ##@Project Run demo via Docker + $(call title,"Demo - Valid CSV \(via Docker\)") + @docker run --rm \ + -v `pwd`:/parent-host \ + jbzoo/csv-blueprint:local \ + validate:csv \ + --csv=/parent-host/tests/fixtures/demo.csv \ + --schema=/parent-host/tests/schemas/demo_valid.yml \ + --ansi -vvv + $(call title,"Demo - Invalid CSV \(via Docker\)") + @docker run --rm \ + -v `pwd`:/parent-host \ + jbzoo/csv-blueprint:local \ + validate:csv \ + --csv=/parent-host/tests/fixtures/demo.csv \ + --schema=/parent-host/tests/schemas/demo_invalid.yml \ + --ansi -vvv diff --git a/composer.json b/composer.json index cde30aa5..9b43b8ec 100644 --- a/composer.json +++ b/composer.json @@ -40,10 +40,7 @@ "symfony/filesystem" : ">=6.4.3", "symfony/finder" : ">=6.4.0", "markrogoyski/math-php" : "^2.9.0", - "respect/validation" : "^2.3.5", - - "classpreloader/classpreloader" : "^4.2", - "classpreloader/console" : "^3.2" + "respect/validation" : "^2.3.5" }, "require-dev" : { @@ -62,7 +59,7 @@ }, "config" : { - "optimize-autoloader" : false, + "optimize-autoloader" : true, "allow-plugins" : {"composer/package-versions-deprecated" : true}, "platform-check" : true }, diff --git a/composer.lock b/composer.lock index 5993ae00..c79f8906 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": "b04776bf71361a38919613c8873eacd6", + "content-hash": "5b4ad969eaf8433f0f94fd864c697149", "packages": [ { "name": "bluepsyduck/symfony-process-manager", @@ -63,143 +63,6 @@ }, "time": "2021-12-03T21:30:28+00:00" }, - { - "name": "classpreloader/classpreloader", - "version": "4.2.0", - "source": { - "type": "git", - "url": "https://github.com/ClassPreloader/ClassPreloader.git", - "reference": "af9284543aedb45ed58359374918141c0ac7ae34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/af9284543aedb45ed58359374918141c0ac7ae34", - "reference": "af9284543aedb45ed58359374918141c0ac7ae34", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nikic/php-parser": "^4.10.3", - "php": "^7.0.8 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "graham-campbell/analyzer": "^2.4.3 || ^3.0.4", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19" - }, - "type": "library", - "autoload": { - "psr-4": { - "ClassPreloader\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" - } - ], - "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", - "keywords": [ - "autoload", - "class", - "preload", - "preloader" - ], - "support": { - "issues": "https://github.com/ClassPreloader/ClassPreloader/issues", - "source": "https://github.com/ClassPreloader/ClassPreloader/tree/4.2.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/classpreloader/classpreloader", - "type": "tidelift" - } - ], - "time": "2021-08-28T21:56:17+00:00" - }, - { - "name": "classpreloader/console", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/ClassPreloader/Console.git", - "reference": "b82d2d1600431442f37b406a2c08b1ddd65c9494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/Console/zipball/b82d2d1600431442f37b406a2c08b1ddd65c9494", - "reference": "b82d2d1600431442f37b406a2c08b1ddd65c9494", - "shasum": "" - }, - "require": { - "classpreloader/classpreloader": "^4.2", - "php": "^7.0.8 || ^8.0", - "symfony/console": "^3.4 || ^4.4 || ^5.0 || ^6.0", - "symfony/polyfill-ctype": "^1.9" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "graham-campbell/analyzer": "^2.4.3 || ^3.0.4", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19" - }, - "bin": [ - "bin/classpreloader" - ], - "type": "library", - "autoload": { - "psr-4": { - "ClassPreloader\\Console\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" - } - ], - "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", - "keywords": [ - "autoload", - "class", - "preload", - "preloader" - ], - "support": { - "source": "https://github.com/ClassPreloader/Console/tree/3.2.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/classpreloader/console", - "type": "tidelift" - } - ], - "time": "2021-08-28T22:04:01+00:00" - }, { "name": "jbzoo/ci-report-converter", "version": "7.2.1", @@ -925,62 +788,6 @@ ], "time": "2023-10-27T15:32:31+00:00" }, - { - "name": "nikic/php-parser", - "version": "v4.19.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.1" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" - }, - "time": "2024-03-17T08:10:35+00:00" - }, { "name": "psr/container", "version": "2.0.2", @@ -3876,6 +3683,62 @@ }, "time": "2024-01-31T06:18:54+00:00" }, + { + "name": "nikic/php-parser", + "version": "v4.19.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + }, + "time": "2024-03-17T08:10:35+00:00" + }, { "name": "pdepend/pdepend", "version": "2.16.2", diff --git a/Dockerfile b/docker/Dockerfile similarity index 89% rename from Dockerfile rename to docker/Dockerfile index 093076b0..416bf05b 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -21,12 +21,13 @@ ENV COMPOSER_ALLOW_SUPERUSER=1 COPY . /app RUN cd /app \ && composer install --no-dev \ + --classmap-authoritative \ --no-progress \ && composer clear-cache \ && chmod +x /app/csv-blueprint RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" -COPY docker/php.ini /usr/local/etc/php/conf.d/docker-z99-php.ini +COPY ./docker/php.ini /usr/local/etc/php/conf.d/docker-z99-php.ini # Test and warmup opcache RUN /app/csv-blueprint validate:csv -h diff --git a/tests/PackageTest.php b/tests/PackageTest.php index 7067c2ed..10fbed34 100644 --- a/tests/PackageTest.php +++ b/tests/PackageTest.php @@ -16,8 +16,6 @@ namespace JBZoo\PHPUnit; -use function JBZoo\Data\json; - final class PackageTest extends \JBZoo\Codestyle\PHPUnit\AbstractPackageTest { protected string $packageName = 'Csv-Blueprint'; @@ -86,12 +84,6 @@ protected function setUp(): void parent::setUp(); } - public static function testComposerOptimizeAutoloader(): void - { - $composer = json(PROJECT_ROOT . '/composer.json'); - isSame(false, $composer->find('config.optimize-autoloader')); - } - protected function checkBadgeGithubActionsDemo(): ?string { $path = 'https://github.com/__VENDOR_ORIG__/__PACKAGE_ORIG__/actions/workflows';