From 7d217002eb554c91061cec0a73543b0a9b18f021 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 09:49:04 +0200 Subject: [PATCH 01/33] #3 Bump dependency "cleverage/process-bundle": "^4.0" --- composer.json | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index a455880..67cd0d7 100644 --- a/composer.json +++ b/composer.json @@ -15,21 +15,9 @@ "license": "MIT", "authors": [ { - "name": "Vincent Chalnot", - "email": "vchalnot@clever-age.com", - "homepage": "http://chalnot.fr", + "name": "Nicolas Joubert", + "email": "njoubert@clever-age.com", "role": "Lead Developer" - }, - { - "name": "Valentin Clavreul", - "email": "vclavreul@clever-age.com", - "role": "Developer" - }, - { - "name": "Madeline Veyrenc", - "email": "mveyrenc@clever-age.com", - "homepage": "https://github.com/mveyrenc", - "role": "Developer" } ], "autoload": { @@ -38,7 +26,8 @@ } }, "require": { - "cleverage/process-bundle": "3.*|dev-v3.0-dev" + "php": ">=8.1", + "cleverage/process-bundle": "^4.0" }, "require-dev": { "phpunit/phpunit": "~6.4" From 572136b74ff6012c646f3bfd74fb6c8bce91572b Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 10:44:08 +0200 Subject: [PATCH 02/33] #4 Add Makefile & .docker for local standalone usage --- .docker/compose.yaml | 14 ++++++++++ .docker/php/Dockerfile | 29 ++++++++++++++++++++ .docker/php/conf.d/dev.ini | 5 ++++ Makefile | 54 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 .docker/compose.yaml create mode 100644 .docker/php/Dockerfile create mode 100644 .docker/php/conf.d/dev.ini create mode 100644 Makefile diff --git a/.docker/compose.yaml b/.docker/compose.yaml new file mode 100644 index 0000000..55b037f --- /dev/null +++ b/.docker/compose.yaml @@ -0,0 +1,14 @@ +x-build-args: &build-args + UID: "${UID:-1000}" + GID: "${GID:-1000}" + +name: cleverage-cache-process-bundle + +services: + php: + build: + context: php + args: + <<: *build-args + volumes: + - ../:/var/www diff --git a/.docker/php/Dockerfile b/.docker/php/Dockerfile new file mode 100644 index 0000000..f98c3ba --- /dev/null +++ b/.docker/php/Dockerfile @@ -0,0 +1,29 @@ +FROM php:8.2-fpm-alpine + +ARG UID +ARG GID + +RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" +COPY /conf.d/ "$PHP_INI_DIR/conf.d/" + +RUN apk update && apk add \ + tzdata \ + shadow \ + nano \ + bash \ + icu-dev \ + && docker-php-ext-configure intl \ + && docker-php-ext-install intl opcache \ + && docker-php-ext-enable opcache + +RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \ + && sed -i "s/^;date.timezone =.*/date.timezone = Europe\/Paris/" $PHP_INI_DIR/php.ini + +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +RUN usermod -u $UID www-data \ + && groupmod -g $GID www-data + +USER www-data:www-data + +WORKDIR /var/www diff --git a/.docker/php/conf.d/dev.ini b/.docker/php/conf.d/dev.ini new file mode 100644 index 0000000..2a141be --- /dev/null +++ b/.docker/php/conf.d/dev.ini @@ -0,0 +1,5 @@ +display_errors = 1 +error_reporting = E_ALL + +opcache.validate_timestamps = 1 +opcache.revalidate_freq = 0 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0a58e32 --- /dev/null +++ b/Makefile @@ -0,0 +1,54 @@ +.ONESHELL: +SHELL := /bin/bash + +DOCKER_RUN_PHP = docker compose -f .docker/compose.yaml run --rm php "bash" "-c" +DOCKER_COMPOSE = docker compose -f .docker/compose.yaml + +start: upd #[Global] Start application + +src/vendor: #[Composer] install dependencies + $(DOCKER_RUN_PHP) "composer install --no-interaction" + +upd: #[Docker] Start containers detached + touch .docker/.env + make src/vendor + $(DOCKER_COMPOSE) up --remove-orphans --detach + +up: #[Docker] Start containers + touch .docker/.env + make src/vendor + $(DOCKER_COMPOSE) up --remove-orphans + +stop: #[Docker] Down containers + $(DOCKER_COMPOSE) stop + +down: #[Docker] Down containers + $(DOCKER_COMPOSE) down + +build: #[Docker] Build containers + $(DOCKER_COMPOSE) build + +ps: # [Docker] Show running containers + $(DOCKER_COMPOSE) ps + +bash: #[Docker] Connect to php container with current host user + $(DOCKER_COMPOSE) exec php bash + +logs: #[Docker] Show logs + $(DOCKER_COMPOSE) logs -f + +quality: phpstan php-cs-fixer rector #[Quality] Run all quality checks + +phpstan: #[Quality] Run PHPStan + $(DOCKER_RUN_PHP) "vendor/bin/phpstan --no-progress --memory-limit=1G analyse" + +php-cs-fixer: #[Quality] Run PHP-CS-Fixer + $(DOCKER_RUN_PHP) "vendor/bin/php-cs-fixer fix --diff --verbose" + +rector: #[Quality] Run Rector + $(DOCKER_RUN_PHP) "vendor/bin/rector" + +tests: phpunit #[Tests] Run all tests + +phpunit: #[Tests] Run PHPUnit + $(DOCKER_RUN_PHP) "vendor/bin/phpunit" From f72177fd1fb06f785c7a175eb7a056008519ef5c Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 10:45:20 +0200 Subject: [PATCH 03/33] #4 Fix .gitignore & composer requirements --- .gitignore | 7 +++++++ composer.json | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ff72e2d..ca08796 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ /composer.lock /vendor +.env +.idea +/phpunit.xml +.phpunit.result.cache +.phpunit.cache +.php-cs-fixer.cache +coverage-report diff --git a/composer.json b/composer.json index 67cd0d7..e42f7f1 100644 --- a/composer.json +++ b/composer.json @@ -27,9 +27,15 @@ }, "require": { "php": ">=8.1", - "cleverage/process-bundle": "^4.0" + "cleverage/process-bundle": "^4.0", + "symfony/cache": "^6.4|^7.1" }, "require-dev": { - "phpunit/phpunit": "~6.4" + }, + "config": { + "allow-plugins": { + "symfony/runtime": true + }, + "sort-packages": true } } From 037ad7659efe34a34c1f4960d8597c7a11544512 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 10:47:18 +0200 Subject: [PATCH 04/33] #5 Update README. Add docs, CHANGELOG & CONTRIBUTING. --- CHANGELOG.md | 20 ++++++++++++ CONTRIBUTING.md | 52 +++++++++++++++++++++++++++++++ LICENSE | 2 +- README.md | 44 +++++++------------------- docs/index.md | 25 +++++++++++++++ docs/reference/tasks/_template.md | 44 ++++++++++++++++++++++++++ 6 files changed, 153 insertions(+), 34 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 docs/index.md create mode 100644 docs/reference/tasks/_template.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..df4a784 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +v1.0.0 +------ + +* Initial stable release + +## BC breaks + +* [#3](https://github.com/cleverage/cache-process-bundle/issues/3) Bump dependency "cleverage/process-bundle": "^4.0" +* [#5](https://github.com/cleverage/cache-process-bundle/issues/5) Update services according to Symfony best practices. Services should not use autowiring or autoconfiguration. Instead, all services should be defined explicitly. + Services must be prefixed with the bundle alias instead of using fully qualified class names => `cleverage_cache_process` + +### Changes + +* [#4](https://github.com/cleverage/cache-process-bundle/issues/4) Add Makefile & .docker for local standalone usage +* [#4](https://github.com/cleverage/cache-process-bundle/issues/4) Add rector, phpstan & php-cs-fixer configurations & apply it + +v0.3 +------ + +* Legacy release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8222397 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,52 @@ +Contributing +============ + +First of all, **thank you** for contributing, **you are awesome**! + +Here are a few rules to follow in order to ease code reviews, and discussions before +maintainers accept and merge your work. + +You MUST run the quality & test suites. + +You SHOULD write (or update) unit tests. + +You SHOULD write documentation. + +Please, write [commit messages that make sense](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html), +and [rebase your branch](https://git-scm.com/book/en/v2/Git-Branching-Rebasing) before submitting your Pull Request. + +One may ask you to [squash your commits](https://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) +too. This is used to "clean" your Pull Request before merging it (we don't want +commits such as `fix tests`, `fix 2`, `fix 3`, etc.). + +Thank you! + +## Running the quality & test suites + +Tests suite uses Docker environments in order to be idempotent to OS's. More than this +PHP version is written inside the Dockerfile; this assures to test the bundle with +the same resources. No need to have PHP installed. + +You only need Docker set it up. + +To allow testing environments more smooth we implemented **Makefile**. +You have two commands available: + +```bash +make quality +``` + +```bash +make tests +``` + +## Deprecations notices + +When a feature should be deprecated, or when you have a breaking change for a future version, please : +* [Fill an issue](https://github.com/cleverage/cache-process-bundl/issues/new) +* Add TODO comments with the following format: `@TODO deprecated v2.0` +* Trigger a deprecation error: `@trigger_error('This feature will be deprecated in v2.0', E_USER_DEPRECATED);` + +You can check which deprecation notice is triggered in tests +* `make bash` +* `SYMFONY_DEPRECATIONS_HELPER=0 ./vendor/bin/phpunit` diff --git a/LICENSE b/LICENSE index fdc6131..045d824 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2015-2019 Clever-Age +Copyright (c) Clever-Age Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index d2bb616..cb5b76d 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,22 @@ CleverAge/CacheProcessBundle ======================= -See process bundle documentation +This bundle is a part of the [CleverAge/ProcessBundle](https://github.com/cleverage/process-bundle) project. +It provides [Cache](https://symfony.com/doc/current/components/cache.html) integration on Process bundle. -## Help needed - -This bundle is a mess, it doesn't require the proper dependencies, it uses missing methods (transformValue), there is a -general lack of comments and annotations and it needs to be properly migrated to PHP7.1+. - -Also we need to check if tests are ok. +Compatible with [Symfony stable version and latest Long-Term Support (LTS) release](https://symfony.com/releases). ## Documentation -Contains tasks and transformers to handle cache. - -Activation ----------- - -Activated if cache pool `cleverage_process` is defined. - -Task reference --------------- - -* **Service**: `CleverAge\ProcessBundle\Transformer\ArrayFilterTransformer` -* **Transformer code**: `array_filter` - -Accepted inputs ---------------- - -`array` or `\Iterable` +For usage documentation, see: +[docs/index.md](docs/index.md) -Possible outputs ----------------- +## Support & Contribution -`array` containing only filtered data +For general support and questions, please use [Github](https://github.com/cleverage/cache-process-bundle/issues). +If you think you found a bug or you have a feature idea to propose, feel free to open an issue after looking at the [contributing](CONTRIBUTING.md) guide. -Options -------- +## License -| Code | Type | Required | Default | Description | -| ---- | ---- | :------: | ------- | ----------- | -| `condition` | `array` | | `[]` | See [ConditionTrait](TODO) | -____ +This bundle is under the MIT license. +For the whole copyright, see the [LICENSE](LICENSE) file distributed with this source code. diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..b6d8f05 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,25 @@ +## Prerequisite + +CleverAge/ProcessBundle must be [installed](https://github.com/cleverage/process-bundle/blob/main/docs/01-quick_start.md#installation. + +## Installation + +Make sure Composer is installed globally, as explained in the [installation chapter](https://getcomposer.org/doc/00-intro.md) +of the Composer documentation. + +Open a command console, enter your project directory and install it using composer: + +```bash +composer require cleverage/cache-process-bundle +``` + +Remember to add the following line to config/bundles.php (not required if Symfony Flex is used) + +```php +CleverAge\CacheProcessBundle\CleverAgeCacheProcessBundle::class => ['all' => true], +``` + +## Reference + +- Tasks + - TODO diff --git a/docs/reference/tasks/_template.md b/docs/reference/tasks/_template.md new file mode 100644 index 0000000..ed1d4a5 --- /dev/null +++ b/docs/reference/tasks/_template.md @@ -0,0 +1,44 @@ +TaskName +======== + +_Describe main goal an use cases of the task_ + +Task reference +-------------- + +* **Service**: `ClassName` + +Accepted inputs +--------------- + +_Description of allowed types_ + +Possible outputs +---------------- + +_Description of possible types_ + +Options +------- + +| Code | Type | Required | Default | Description | +| ---- | ---- | :------: | ------- | ----------- | +| `code` | `type` | **X** _or nothing_ | `default value` _if available_ | _description_ | + +Examples +-------- + +_YAML samples and explanations_ + +* Example 1 + - details + - details + +```yaml +# Task configuration level +code: + service: '@service_ref' + options: + a: 1 + b: 2 +``` From 67a5bb78194406772f17e305ce221dd70330b40b Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 10:55:15 +0200 Subject: [PATCH 05/33] #4 Add rector, phpstan & php-cs-fixer configurations --- .php-cs-fixer.dist.php | 46 ++++++++++++++++++++++++++++++++++++++++++ composer.json | 10 +++++++++ phpstan.neon | 5 +++++ phpunit.xml.dist | 27 +++++++++++++++++++++++++ rector.php | 30 +++++++++++++++++++++++++++ tests/.gitkeep | 0 6 files changed, 118 insertions(+) create mode 100644 .php-cs-fixer.dist.php create mode 100644 phpstan.neon create mode 100644 phpunit.xml.dist create mode 100644 rector.php create mode 100644 tests/.gitkeep diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000..68f8bcf --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,46 @@ +setRules([ + '@PHP71Migration' => true, + '@PHP82Migration' => true, + '@PHPUnit75Migration:risky' => true, + '@Symfony' => true, + '@Symfony:risky' => true, + 'protected_to_private' => false, + 'native_constant_invocation' => ['strict' => false], + 'header_comment' => ['header' => $fileHeaderComment], + 'modernize_strpos' => true, + 'get_class_to_class_keyword' => true, + ]) + ->setRiskyAllowed(true) + ->setFinder( + (new PhpCsFixer\Finder()) + ->in(__DIR__.'/src') + ->in(__DIR__.'/tests') + ->append([__FILE__]) + ) + ->setCacheFile('.php-cs-fixer.cache') +; diff --git a/composer.json b/composer.json index e42f7f1..f1ebc22 100644 --- a/composer.json +++ b/composer.json @@ -31,9 +31,19 @@ "symfony/cache": "^6.4|^7.1" }, "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "phpstan/extension-installer": "*", + "phpstan/phpstan": "*", + "phpstan/phpstan-symfony": "*", + "phpunit/phpunit": "*", + "rector/rector": "*", + "roave/security-advisories": "dev-latest", + "symfony/test-pack": "^1.1" }, "config": { "allow-plugins": { + "phpstan/extension-installer": true, + "symfony/flex": true, "symfony/runtime": true }, "sort-packages": true diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..e9a9e7e --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,5 @@ +parameters: + level: 10 + paths: + - src + - tests diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..766495c --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,27 @@ + + + + + tests + + + + + + src + + + diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..72a2408 --- /dev/null +++ b/rector.php @@ -0,0 +1,30 @@ +withPhpVersion(PhpVersion::PHP_82) + ->withPaths([ + __DIR__.'/src', + __DIR__.'/tests', + ]) + ->withPhpSets(php82: true) + // here we can define, what prepared sets of rules will be applied + ->withPreparedSets( + deadCode: true, + codeQuality: true + ) + ->withSets([ + LevelSetList::UP_TO_PHP_82, + SymfonySetList::SYMFONY_64, + SymfonySetList::SYMFONY_71, + SymfonySetList::SYMFONY_CODE_QUALITY, + SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION, + SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES, + ]) +; diff --git a/tests/.gitkeep b/tests/.gitkeep new file mode 100644 index 0000000..e69de29 From 020ef82d2b1c58ce421a0f537d1d507ad743faf9 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 11:10:15 +0200 Subject: [PATCH 06/33] #5 Apply Symfony best practices : Directory Structure --- .../CleverAgeCacheProcessExtension.php | 26 ----------- composer.json | 7 ++- .../config => config}/services/task.yml | 2 +- .../services/transformer.yml | 2 +- .../CleverAgeCacheProcessBundle.php | 13 +++--- .../CleverAgeCacheProcessExtension.php | 44 +++++++++++++++++++ .../Compiler/CachePoolPass.php | 2 +- {Task => src/Task}/AbstractCacheTask.php | 2 +- {Task => src/Task}/DeleterTask.php | 2 +- {Task => src/Task}/GetterTask.php | 2 +- {Task => src/Task}/SetterTask.php | 2 +- .../Transformer}/AbstractCacheTransformer.php | 2 +- .../Transformer}/DeleterTransformer.php | 2 +- .../Transformer}/GetterTransformer.php | 2 +- .../Transformer}/SetterTransformer.php | 2 +- {Tests => test.old}/Task/DeleterTaskTest.php | 2 +- {Tests => test.old}/Task/GetterTaskTest.php | 2 +- {Tests => test.old}/Task/SetterTaskTest.php | 2 +- .../Transformer/DeleterTransformerTest.php | 2 +- .../Transformer/GetterTransformerTest.php | 2 +- .../Transformer/SetterTransformerTest.php | 2 +- .../task/cache_deleter_task.yml | 0 .../task/cache_getter_task.yml | 0 .../task/cache_setter_task.yml | 0 .../transformer/cache_deleter_transformer.yml | 0 .../transformer/cache_getter_transformer.yml | 0 .../transformer/cache_setter_transformer.yml | 0 27 files changed, 72 insertions(+), 52 deletions(-) delete mode 100644 DependencyInjection/CleverAgeCacheProcessExtension.php rename {Resources/config => config}/services/task.yml (87%) rename {Resources/config => config}/services/transformer.yml (86%) rename CleverAgeCacheProcessBundle.php => src/CleverAgeCacheProcessBundle.php (59%) create mode 100644 src/DependencyInjection/CleverAgeCacheProcessExtension.php rename {DependencyInjection => src/DependencyInjection}/Compiler/CachePoolPass.php (96%) rename {Task => src/Task}/AbstractCacheTask.php (98%) rename {Task => src/Task}/DeleterTask.php (94%) rename {Task => src/Task}/GetterTask.php (95%) rename {Task => src/Task}/SetterTask.php (97%) rename {Transformer => src/Transformer}/AbstractCacheTransformer.php (98%) rename {Transformer => src/Transformer}/DeleterTransformer.php (94%) rename {Transformer => src/Transformer}/GetterTransformer.php (96%) rename {Transformer => src/Transformer}/SetterTransformer.php (97%) rename {Tests => test.old}/Task/DeleterTaskTest.php (98%) rename {Tests => test.old}/Task/GetterTaskTest.php (98%) rename {Tests => test.old}/Task/SetterTaskTest.php (98%) rename {Tests => test.old}/Transformer/DeleterTransformerTest.php (98%) rename {Tests => test.old}/Transformer/GetterTransformerTest.php (98%) rename {Tests => test.old}/Transformer/SetterTransformerTest.php (98%) rename {Resources/tests => test.old}/task/cache_deleter_task.yml (100%) rename {Resources/tests => test.old}/task/cache_getter_task.yml (100%) rename {Resources/tests => test.old}/task/cache_setter_task.yml (100%) rename {Resources/tests => test.old}/transformer/cache_deleter_transformer.yml (100%) rename {Resources/tests => test.old}/transformer/cache_getter_transformer.yml (100%) rename {Resources/tests => test.old}/transformer/cache_setter_transformer.yml (100%) diff --git a/DependencyInjection/CleverAgeCacheProcessExtension.php b/DependencyInjection/CleverAgeCacheProcessExtension.php deleted file mode 100644 index 3e76c47..0000000 --- a/DependencyInjection/CleverAgeCacheProcessExtension.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @author Vincent Chalnot - * @author Madeline Veyrenc - */ -class CleverAgeCacheProcessExtension extends SidusBaseExtension -{ -} diff --git a/composer.json b/composer.json index f1ebc22..dab2c04 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,12 @@ ], "autoload": { "psr-4": { - "CleverAge\\CacheProcessBundle\\": "" + "CleverAge\\CacheProcessBundle\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "CleverAge\\CacheProcessBundle\\Tests\\": "tests/" } }, "require": { diff --git a/Resources/config/services/task.yml b/config/services/task.yml similarity index 87% rename from Resources/config/services/task.yml rename to config/services/task.yml index 820c55f..24f726b 100644 --- a/Resources/config/services/task.yml +++ b/config/services/task.yml @@ -1,6 +1,6 @@ services: CleverAge\CacheProcessBundle\Task\: - resource: '../../../Task/*' + resource: '../../src/Task/*' autowire: true public: true shared: false diff --git a/Resources/config/services/transformer.yml b/config/services/transformer.yml similarity index 86% rename from Resources/config/services/transformer.yml rename to config/services/transformer.yml index 317edf0..bf82448 100644 --- a/Resources/config/services/transformer.yml +++ b/config/services/transformer.yml @@ -1,6 +1,6 @@ services: CleverAge\CacheProcessBundle\Transformer\: - resource: '../../../Transformer/*' + resource: '../../src/Transformer/*' autowire: true public: false arguments: diff --git a/CleverAgeCacheProcessBundle.php b/src/CleverAgeCacheProcessBundle.php similarity index 59% rename from CleverAgeCacheProcessBundle.php rename to src/CleverAgeCacheProcessBundle.php index 63d0cfe..150641a 100644 --- a/CleverAgeCacheProcessBundle.php +++ b/src/CleverAgeCacheProcessBundle.php @@ -8,17 +8,14 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle; +namespace CleverAge\CacheProcessBundle\src; use Symfony\Component\HttpKernel\Bundle\Bundle; -/** - * Class CleverAgeCacheProcessBundle - * - * @author Valentin Clavreul - * @author Vincent Chalnot - * @author Madeline Veyrenc - */ class CleverAgeCacheProcessBundle extends Bundle { + public function getPath(): string + { + return \dirname(__DIR__); + } } diff --git a/src/DependencyInjection/CleverAgeCacheProcessExtension.php b/src/DependencyInjection/CleverAgeCacheProcessExtension.php new file mode 100644 index 0000000..7346a4b --- /dev/null +++ b/src/DependencyInjection/CleverAgeCacheProcessExtension.php @@ -0,0 +1,44 @@ +findServices($container, __DIR__.'/../../config/services'); + } + + /** + * Recursively import config files into container. + */ + protected function findServices(ContainerBuilder $container, string $path, string $extension = 'yaml'): void + { + $finder = new Finder(); + $finder->in($path) + ->name('*.'.$extension)->files(); + $loader = new YamlFileLoader($container, new FileLocator($path)); + foreach ($finder as $file) { + $loader->load($file->getFilename()); + } + } +} diff --git a/DependencyInjection/Compiler/CachePoolPass.php b/src/DependencyInjection/Compiler/CachePoolPass.php similarity index 96% rename from DependencyInjection/Compiler/CachePoolPass.php rename to src/DependencyInjection/Compiler/CachePoolPass.php index 31797a7..aea0720 100644 --- a/DependencyInjection/Compiler/CachePoolPass.php +++ b/src/DependencyInjection/Compiler/CachePoolPass.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\DependencyInjection\Compiler; +namespace CleverAge\CacheProcessBundle\src\DependencyInjection\Compiler; use Psr\Cache\CacheItemPoolInterface; use Symfony\Component\DependencyInjection\ChildDefinition; diff --git a/Task/AbstractCacheTask.php b/src/Task/AbstractCacheTask.php similarity index 98% rename from Task/AbstractCacheTask.php rename to src/Task/AbstractCacheTask.php index 4f7b98f..8da1967 100644 --- a/Task/AbstractCacheTask.php +++ b/src/Task/AbstractCacheTask.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Task; +namespace CleverAge\CacheProcessBundle\src\Task; use CleverAge\ProcessBundle\Model\AbstractConfigurableTask; use CleverAge\ProcessBundle\Model\ProcessState; diff --git a/Task/DeleterTask.php b/src/Task/DeleterTask.php similarity index 94% rename from Task/DeleterTask.php rename to src/Task/DeleterTask.php index 2438724..630efc7 100644 --- a/Task/DeleterTask.php +++ b/src/Task/DeleterTask.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Task; +namespace CleverAge\CacheProcessBundle\src\Task; use CleverAge\ProcessBundle\Model\ProcessState; use Psr\Cache\InvalidArgumentException; diff --git a/Task/GetterTask.php b/src/Task/GetterTask.php similarity index 95% rename from Task/GetterTask.php rename to src/Task/GetterTask.php index f40f89e..60e0e98 100644 --- a/Task/GetterTask.php +++ b/src/Task/GetterTask.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Task; +namespace CleverAge\CacheProcessBundle\src\Task; use CleverAge\ProcessBundle\Model\ProcessState; use Psr\Cache\InvalidArgumentException; diff --git a/Task/SetterTask.php b/src/Task/SetterTask.php similarity index 97% rename from Task/SetterTask.php rename to src/Task/SetterTask.php index e2f4b31..d8863ad 100644 --- a/Task/SetterTask.php +++ b/src/Task/SetterTask.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Task; +namespace CleverAge\CacheProcessBundle\src\Task; use CleverAge\ProcessBundle\Model\ProcessState; use Psr\Cache\InvalidArgumentException; diff --git a/Transformer/AbstractCacheTransformer.php b/src/Transformer/AbstractCacheTransformer.php similarity index 98% rename from Transformer/AbstractCacheTransformer.php rename to src/Transformer/AbstractCacheTransformer.php index ccf7d87..8de6775 100644 --- a/Transformer/AbstractCacheTransformer.php +++ b/src/Transformer/AbstractCacheTransformer.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Transformer; +namespace CleverAge\CacheProcessBundle\src\Transformer; use CleverAge\ProcessBundle\Registry\TransformerRegistry; use CleverAge\ProcessBundle\Transformer\ConfigurableTransformerInterface; diff --git a/Transformer/DeleterTransformer.php b/src/Transformer/DeleterTransformer.php similarity index 94% rename from Transformer/DeleterTransformer.php rename to src/Transformer/DeleterTransformer.php index 8ba9801..3e3d6bf 100644 --- a/Transformer/DeleterTransformer.php +++ b/src/Transformer/DeleterTransformer.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Transformer; +namespace CleverAge\CacheProcessBundle\src\Transformer; use Psr\Cache\InvalidArgumentException; diff --git a/Transformer/GetterTransformer.php b/src/Transformer/GetterTransformer.php similarity index 96% rename from Transformer/GetterTransformer.php rename to src/Transformer/GetterTransformer.php index d7e0855..012c73c 100644 --- a/Transformer/GetterTransformer.php +++ b/src/Transformer/GetterTransformer.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Transformer; +namespace CleverAge\CacheProcessBundle\src\Transformer; use CleverAge\ProcessBundle\Exception\TransformerException; use Psr\Cache\InvalidArgumentException; diff --git a/Transformer/SetterTransformer.php b/src/Transformer/SetterTransformer.php similarity index 97% rename from Transformer/SetterTransformer.php rename to src/Transformer/SetterTransformer.php index b825f10..bec8ddc 100644 --- a/Transformer/SetterTransformer.php +++ b/src/Transformer/SetterTransformer.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Transformer; +namespace CleverAge\CacheProcessBundle\src\Transformer; use Psr\Cache\InvalidArgumentException; use Symfony\Component\OptionsResolver\Options; diff --git a/Tests/Task/DeleterTaskTest.php b/test.old/Task/DeleterTaskTest.php similarity index 98% rename from Tests/Task/DeleterTaskTest.php rename to test.old/Task/DeleterTaskTest.php index 5024b23..61884fe 100644 --- a/Tests/Task/DeleterTaskTest.php +++ b/test.old/Task/DeleterTaskTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Task; +namespace CleverAge\CacheProcessBundle\tests\Task; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; use Psr\Cache\CacheItemPoolInterface; diff --git a/Tests/Task/GetterTaskTest.php b/test.old/Task/GetterTaskTest.php similarity index 98% rename from Tests/Task/GetterTaskTest.php rename to test.old/Task/GetterTaskTest.php index d48858d..ad1a2e8 100644 --- a/Tests/Task/GetterTaskTest.php +++ b/test.old/Task/GetterTaskTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Task; +namespace CleverAge\CacheProcessBundle\tests\Task; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; use Psr\Cache\CacheItemPoolInterface; diff --git a/Tests/Task/SetterTaskTest.php b/test.old/Task/SetterTaskTest.php similarity index 98% rename from Tests/Task/SetterTaskTest.php rename to test.old/Task/SetterTaskTest.php index c49ed6b..3b2c51e 100644 --- a/Tests/Task/SetterTaskTest.php +++ b/test.old/Task/SetterTaskTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Task; +namespace CleverAge\CacheProcessBundle\tests\Task; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; diff --git a/Tests/Transformer/DeleterTransformerTest.php b/test.old/Transformer/DeleterTransformerTest.php similarity index 98% rename from Tests/Transformer/DeleterTransformerTest.php rename to test.old/Transformer/DeleterTransformerTest.php index 52f6ef7..e95b656 100644 --- a/Tests/Transformer/DeleterTransformerTest.php +++ b/test.old/Transformer/DeleterTransformerTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Transformer; +namespace CleverAge\CacheProcessBundle\tests\Transformer; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; use Psr\Cache\CacheItemPoolInterface; diff --git a/Tests/Transformer/GetterTransformerTest.php b/test.old/Transformer/GetterTransformerTest.php similarity index 98% rename from Tests/Transformer/GetterTransformerTest.php rename to test.old/Transformer/GetterTransformerTest.php index 4eb9c86..170caa9 100644 --- a/Tests/Transformer/GetterTransformerTest.php +++ b/test.old/Transformer/GetterTransformerTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Transformer; +namespace CleverAge\CacheProcessBundle\tests\Transformer; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; use Psr\Cache\CacheItemPoolInterface; diff --git a/Tests/Transformer/SetterTransformerTest.php b/test.old/Transformer/SetterTransformerTest.php similarity index 98% rename from Tests/Transformer/SetterTransformerTest.php rename to test.old/Transformer/SetterTransformerTest.php index e2f7b84..20d1b41 100644 --- a/Tests/Transformer/SetterTransformerTest.php +++ b/test.old/Transformer/SetterTransformerTest.php @@ -8,7 +8,7 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\Tests\Transformer; +namespace CleverAge\CacheProcessBundle\tests\Transformer; use CleverAge\ProcessBundle\Tests\AbstractProcessTest; use Psr\Cache\CacheItemPoolInterface; diff --git a/Resources/tests/task/cache_deleter_task.yml b/test.old/task/cache_deleter_task.yml similarity index 100% rename from Resources/tests/task/cache_deleter_task.yml rename to test.old/task/cache_deleter_task.yml diff --git a/Resources/tests/task/cache_getter_task.yml b/test.old/task/cache_getter_task.yml similarity index 100% rename from Resources/tests/task/cache_getter_task.yml rename to test.old/task/cache_getter_task.yml diff --git a/Resources/tests/task/cache_setter_task.yml b/test.old/task/cache_setter_task.yml similarity index 100% rename from Resources/tests/task/cache_setter_task.yml rename to test.old/task/cache_setter_task.yml diff --git a/Resources/tests/transformer/cache_deleter_transformer.yml b/test.old/transformer/cache_deleter_transformer.yml similarity index 100% rename from Resources/tests/transformer/cache_deleter_transformer.yml rename to test.old/transformer/cache_deleter_transformer.yml diff --git a/Resources/tests/transformer/cache_getter_transformer.yml b/test.old/transformer/cache_getter_transformer.yml similarity index 100% rename from Resources/tests/transformer/cache_getter_transformer.yml rename to test.old/transformer/cache_getter_transformer.yml diff --git a/Resources/tests/transformer/cache_setter_transformer.yml b/test.old/transformer/cache_setter_transformer.yml similarity index 100% rename from Resources/tests/transformer/cache_setter_transformer.yml rename to test.old/transformer/cache_setter_transformer.yml From b0592fddfcecb96741a30c79318c23b96c95eacd Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 11:14:16 +0200 Subject: [PATCH 07/33] #4 Add notifications, quality & test github workflows --- .github/ISSUE_TEMPLATE.md | 14 ++++++ .github/PULL_REQUEST_TEMPLATE.md | 14 ++++++ .github/workflows/notifications.yml | 23 +++++++++ .github/workflows/quality.yml | 62 ++++++++++++++++++++++++ .github/workflows/test.yml | 74 +++++++++++++++++++++++++++++ 5 files changed, 187 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/notifications.yml create mode 100644 .github/workflows/quality.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..7711713 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,14 @@ +## Description + + + +## Requirements + +* Documentation updates + - [ ] Reference + - [ ] Changelog +* [ ] Unit tests + +## Breaking changes + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..58db37d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,14 @@ +## Description + + + +## Requirements + +* Documentation updates + - [ ] Reference + - [ ] Changelog +* [ ] Unit tests + +## Breaking changes + + diff --git a/.github/workflows/notifications.yml b/.github/workflows/notifications.yml new file mode 100644 index 0000000..44b80b9 --- /dev/null +++ b/.github/workflows/notifications.yml @@ -0,0 +1,23 @@ +name: Rocket chat notifications + +# Controls when the action will run. +on: + push: + tags: + - '*' + +jobs: + notification: + runs-on: ubuntu-latest + + steps: + - name: Get the tag short reference + id: get_tag + run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + + - name: Rocket.Chat Notification + uses: madalozzo/Rocket.Chat.GitHub.Action.Notification@master + with: + type: success + job_name: "[cleverage/cache-process-bundle](https://github.com/cleverage/cache-process-bundle) : ${{ steps.get_tag.outputs.TAG }} has been released" + url: ${{ secrets.CLEVER_AGE_ROCKET_CHAT_WEBOOK_URL }} diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml new file mode 100644 index 0000000..9f1580f --- /dev/null +++ b/.github/workflows/quality.yml @@ -0,0 +1,62 @@ +name: Quality + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + phpstan: + name: PHPStan + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + coverage: none + tools: composer:v2 + - name: Install Composer dependencies (locked) + uses: ramsey/composer-install@v3 + - name: PHPStan + run: vendor/bin/phpstan --no-progress --memory-limit=1G analyse --error-format=github + + php-cs-fixer: + name: PHP-CS-Fixer + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + coverage: none + tools: composer:v2 + - name: Install Composer dependencies (locked) + uses: ramsey/composer-install@v3 + - name: PHP-CS-Fixer + run: vendor/bin/php-cs-fixer fix --diff --dry-run --show-progress=none + + rector: + name: Rector + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + coverage: none + tools: composer:v2 + - name: Install Composer dependencies (locked) + uses: ramsey/composer-install@v3 + - name: Rector + run: vendor/bin/rector --no-progress-bar --dry-run diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..2d7e7a4 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,74 @@ +name: Test + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + test: + name: PHP ${{ matrix.php-version }} + ${{ matrix.dependencies }} + ${{ matrix.variant }} + runs-on: ubuntu-latest + continue-on-error: ${{ matrix.allowed-to-fail }} + env: + SYMFONY_REQUIRE: ${{matrix.symfony-require}} + + strategy: + matrix: + php-version: + - '8.2' + - '8.3' + dependencies: [highest] + allowed-to-fail: [false] + symfony-require: [''] + variant: [normal] + include: + - php-version: '8.2' + dependencies: highest + allowed-to-fail: false + symfony-require: 6.4.* + variant: symfony/symfony:"6.4.*" + - php-version: '8.2' + dependencies: highest + allowed-to-fail: false + symfony-require: 7.1.* + variant: symfony/symfony:"7.1.*" + - php-version: '8.3' + dependencies: highest + allowed-to-fail: false + symfony-require: 6.4.* + variant: symfony/symfony:"6.4.*" + - php-version: '8.3' + dependencies: highest + allowed-to-fail: false + symfony-require: 7.1.* + variant: symfony/symfony:"7.1.*" + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: pcov + tools: composer:v2, flex + - name: Add PHPUnit matcher + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + - name: Install variant + if: matrix.variant != 'normal' && !startsWith(matrix.variant, 'symfony/symfony') + run: composer require ${{ matrix.variant }} --no-update + - name: Install Composer dependencies (${{ matrix.dependencies }}) + uses: ramsey/composer-install@v3 + with: + dependency-versions: ${{ matrix.dependencies }} + - name: Run Tests with coverage + run: vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover build/logs/clover.xml + #- name: Send coverage to Codecov + # uses: codecov/codecov-action@v4 + # with: + # files: build/logs/clover.xml From 59f98ff9765dc8ce6ecce0a6bf52ef2cba26e1c2 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 12:15:13 +0200 Subject: [PATCH 08/33] #1 Rework Tasks & Transfomers using AdapterRegistry --- config/services/registry.yaml | 4 + config/services/task.yaml | 20 +++ config/services/task.yml | 10 -- config/services/transformer.yml | 10 -- src/Adapter/Adapter.php | 66 +++++++++ src/Adapter/AdapterInterface.php | 13 ++ src/CleverAgeCacheProcessBundle.php | 18 ++- .../Compiler/CachePoolPass.php | 55 -------- src/Exception/MissingAdapterException.php | 10 ++ src/Registry/AdapterRegistry.php | 37 +++++ src/Task/AbstractCacheTask.php | 107 ++------------- src/Task/DeleterTask.php | 39 ------ src/Task/GetTask.php | 40 ++++++ src/Task/GetterTask.php | 42 ------ src/Task/SetTask.php | 54 ++++++++ src/Task/SetterTask.php | 74 ---------- src/Transformer/AbstractCacheTransformer.php | 126 ------------------ src/Transformer/DeleterTransformer.php | 44 ------ src/Transformer/GetterTransformer.php | 68 ---------- src/Transformer/SetterTransformer.php | 84 ------------ 20 files changed, 274 insertions(+), 647 deletions(-) create mode 100644 config/services/registry.yaml create mode 100644 config/services/task.yaml delete mode 100644 config/services/task.yml delete mode 100644 config/services/transformer.yml create mode 100644 src/Adapter/Adapter.php create mode 100644 src/Adapter/AdapterInterface.php delete mode 100644 src/DependencyInjection/Compiler/CachePoolPass.php create mode 100644 src/Exception/MissingAdapterException.php create mode 100644 src/Registry/AdapterRegistry.php delete mode 100644 src/Task/DeleterTask.php create mode 100644 src/Task/GetTask.php delete mode 100644 src/Task/GetterTask.php create mode 100644 src/Task/SetTask.php delete mode 100644 src/Task/SetterTask.php delete mode 100644 src/Transformer/AbstractCacheTransformer.php delete mode 100644 src/Transformer/DeleterTransformer.php delete mode 100644 src/Transformer/GetterTransformer.php delete mode 100644 src/Transformer/SetterTransformer.php diff --git a/config/services/registry.yaml b/config/services/registry.yaml new file mode 100644 index 0000000..2de9a05 --- /dev/null +++ b/config/services/registry.yaml @@ -0,0 +1,4 @@ +services: + cleverage_cache_process.registry.adapter: + class: CleverAge\CacheProcessBundle\Registry\AdapterRegistry + public: false diff --git a/config/services/task.yaml b/config/services/task.yaml new file mode 100644 index 0000000..dd3b621 --- /dev/null +++ b/config/services/task.yaml @@ -0,0 +1,20 @@ +services: + cleverage_cache_process.task.get: + class: CleverAge\CacheProcessBundle\Task\GetTask + public: false + shared: false + arguments: + - '@cleverage_cache_process.registry.adapter' + CleverAge\CacheProcessBundle\Task\GetTask: + alias: cleverage_cache_process.task.get + public: true + + cleverage_cache_process.task.set: + class: CleverAge\CacheProcessBundle\Task\SetTask + public: false + shared: false + arguments: + - '@cleverage_cache_process.registry.adapter' + CleverAge\CacheProcessBundle\Task\SetTask: + alias: cleverage_cache_process.task.set + public: true diff --git a/config/services/task.yml b/config/services/task.yml deleted file mode 100644 index 24f726b..0000000 --- a/config/services/task.yml +++ /dev/null @@ -1,10 +0,0 @@ -services: - CleverAge\CacheProcessBundle\Task\: - resource: '../../src/Task/*' - autowire: true - public: true - shared: false - arguments: - $cache: '@cache.app' - tags: - - { name: monolog.logger, channel: cleverage_process_task } diff --git a/config/services/transformer.yml b/config/services/transformer.yml deleted file mode 100644 index bf82448..0000000 --- a/config/services/transformer.yml +++ /dev/null @@ -1,10 +0,0 @@ -services: - CleverAge\CacheProcessBundle\Transformer\: - resource: '../../src/Transformer/*' - autowire: true - public: false - arguments: - $cache: '@cache.app' - tags: - - { name: cleverage.transformer } - - { name: monolog.logger, channel: cleverage_process_transformer } diff --git a/src/Adapter/Adapter.php b/src/Adapter/Adapter.php new file mode 100644 index 0000000..642c390 --- /dev/null +++ b/src/Adapter/Adapter.php @@ -0,0 +1,66 @@ +code; + } + + public function getItem(mixed $key): CacheItem + { + return $this->adapter->getItem($key); + } + + public function getItems(array $keys = []): iterable + { + return $this->adapter->getItems($keys); + } + + public function clear(string $prefix = ''): bool + { + return $this->adapter->clear($prefix); + } + + public function hasItem(string $key): bool + { + return $this->adapter->hasItem($key); + } + + public function deleteItem(string $key): bool + { + return $this->adapter->deleteItem($key); + } + + public function deleteItems(array $keys): bool + { + return $this->adapter->deleteItems($keys); + } + + public function save(CacheItemInterface $item): bool + { + return $this->adapter->save($item); + } + + public function saveDeferred(CacheItemInterface $item): bool + { + return $this->adapter->saveDeferred($item); + } + + public function commit(): bool + { + return $this->adapter->commit(); + } +} diff --git a/src/Adapter/AdapterInterface.php b/src/Adapter/AdapterInterface.php new file mode 100644 index 0000000..ddd8223 --- /dev/null +++ b/src/Adapter/AdapterInterface.php @@ -0,0 +1,13 @@ +addCompilerPass( + new RegistryCompilerPass( + 'cleverage_cache_process.registry.adapter', + 'cleverage.cache.adapter', + 'addAdapter' + ) + ); + } + public function getPath(): string { return \dirname(__DIR__); diff --git a/src/DependencyInjection/Compiler/CachePoolPass.php b/src/DependencyInjection/Compiler/CachePoolPass.php deleted file mode 100644 index aea0720..0000000 --- a/src/DependencyInjection/Compiler/CachePoolPass.php +++ /dev/null @@ -1,55 +0,0 @@ - - */ -class CachePoolPass implements CompilerPassInterface -{ - /** - * Inject tagged services into defined registry - * - * @param ContainerBuilder $container - * - * @throws InvalidArgumentException - * @throws \UnexpectedValueException - * @throws ServiceNotFoundException - * @throws \Exception - * @api - * - */ - public function process(ContainerBuilder $container) - { - $name = 'cache.app.cleverage_process'; - $pool = [ - 'adapter' => 'cache.app', - 'public' => true, - ]; - $definition = new ChildDefinition($pool['adapter']); - $container->registerAliasForArgument($name, CacheInterface::class); - $container->registerAliasForArgument($name, CacheItemPoolInterface::class); - $definition->setPublic($pool['public']); - - $definition->addTag('cache.pool'); - $container->setDefinition($name, $definition); - } -} diff --git a/src/Exception/MissingAdapterException.php b/src/Exception/MissingAdapterException.php new file mode 100644 index 0000000..f8f8d9a --- /dev/null +++ b/src/Exception/MissingAdapterException.php @@ -0,0 +1,10 @@ +getCode(), $this->adapters)) { + throw new \UnexpectedValueException("Adapter {$adapter->getCode()} is already defined"); + } + $this->adapters[$adapter->getCode()] = $adapter; + } + + /** + * @throws MissingAdapterException + */ + public function getAdapter(string $code): AdapterInterface + { + if (!\array_key_exists($code, $this->adapters)) { + throw new MissingAdapterException("Adapter {$code} is missing"); + } + + return $this->adapters[$code]; + } +} diff --git a/src/Task/AbstractCacheTask.php b/src/Task/AbstractCacheTask.php index 8da1967..4e631b7 100644 --- a/src/Task/AbstractCacheTask.php +++ b/src/Task/AbstractCacheTask.php @@ -8,119 +8,38 @@ * file that was distributed with this source code. */ -namespace CleverAge\CacheProcessBundle\src\Task; +namespace CleverAge\CacheProcessBundle\Task; +use CleverAge\CacheProcessBundle\Registry\AdapterRegistry; use CleverAge\ProcessBundle\Model\AbstractConfigurableTask; use CleverAge\ProcessBundle\Model\ProcessState; -use CleverAge\ProcessBundle\Registry\TransformerRegistry; -use CleverAge\ProcessBundle\Transformer\TransformerTrait; -use Psr\Cache\CacheItemPoolInterface; -use Psr\Log\LoggerInterface; use Symfony\Component\OptionsResolver\Exception\AccessException; -use Symfony\Component\OptionsResolver\Exception\ExceptionInterface; use Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException; -use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -/** - * Class AbstractCacheTask - * - * @author Madeline Veyrenc - */ abstract class AbstractCacheTask extends AbstractConfigurableTask { - use TransformerTrait; - - /** @var CacheItemPoolInterface */ - private $cache; - - /** - * SetterTask constructor. - * - * @param LoggerInterface $logger - * @param PropertyAccessorInterface $accessor - * @param CacheItemPoolInterface $cache - * @param TransformerRegistry $transformerRegistry - */ - public function __construct( - LoggerInterface $logger, - PropertyAccessorInterface $accessor, - CacheItemPoolInterface $cache, - TransformerRegistry $transformerRegistry - ) { - $this->logger = $logger; - $this->accessor = $accessor; - $this->cache = $cache; - $this->transformerRegistry = $transformerRegistry; - } - - /** - * @return CacheItemPoolInterface - */ - public function getCache(): CacheItemPoolInterface - { - return $this->cache; - } + public function __construct(protected AdapterRegistry $registry) {} /** - * @param OptionsResolver $resolver - * - * @throws AccessException * @throws UndefinedOptionsException + * @throws AccessException */ - protected function configureOptions(OptionsResolver $resolver) - { - $resolver->setRequired( - [ - 'key', - ] - ); - $resolver->setAllowedTypes('key', ['array', 'null']); - - /** @noinspection PhpUnusedParameterInspection */ - $resolver->setNormalizer( - 'key', - function (Options $options, $value) { - $mappingResolver = new OptionsResolver(); - $this->configureMappingOptions($mappingResolver); - - return $mappingResolver->resolve( - $value ?? [] - ); - } - ); - } - - /** - * @param OptionsResolver $resolver - * - * @throws ExceptionInterface - */ - protected function configureMappingOptions(OptionsResolver $resolver) + protected function configureOptions(OptionsResolver $resolver): void { - $resolver->setDefaults( - [ - 'code' => null, // Source property - 'constant' => null, - ] - ); - $resolver->setAllowedTypes('code', ['NULL', 'string', 'array']); + $resolver->setRequired(['adapter', 'key']); - $this->configureTransformersOptions($resolver); + $resolver->setAllowedTypes('adapter', ['string']); + $resolver->setAllowedTypes('key', ['string']); } - /** - * @param ProcessState $state - * - * @throws ExceptionInterface - * @return string - * - */ - protected function getKeyCache(ProcessState $state) + protected function getMergedOptions(ProcessState $state): array { $options = $this->getOptions($state); - return $this->transformValue($state->getInput(), $options['key']); + /** @var array $input */ + $input = $state->getInput() ?: []; + + return array_merge($options, $input); } } diff --git a/src/Task/DeleterTask.php b/src/Task/DeleterTask.php deleted file mode 100644 index 630efc7..0000000 --- a/src/Task/DeleterTask.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -class DeleterTask extends AbstractCacheTask -{ - /** - * @param ProcessState $state - * - * @throws InvalidArgumentException - * @throws ExceptionInterface - */ - public function execute(ProcessState $state) - { - $keyValue = $this->getKeyCache($state); - $input = $state->getInput(); - - $this->getCache()->deleteItem($keyValue); - - $state->setOutput($input); - } -} diff --git a/src/Task/GetTask.php b/src/Task/GetTask.php new file mode 100644 index 0000000..6dde268 --- /dev/null +++ b/src/Task/GetTask.php @@ -0,0 +1,40 @@ +getOptions($state); +// +// /** @var array $input */ +// $input = $state->getInput() ?: []; +// +// /** @var Options $mergedOptions */ +// $mergedOptions = array_merge($options, $input); + /** @var Options $mergedOptions */ + $mergedOptions = $this->getMergedOptions($state); + + $cache = $this->registry->getAdapter($mergedOptions['adapter']); + + $state->setOutput($cache->getItem($mergedOptions['key'])->get()); + } +} diff --git a/src/Task/GetterTask.php b/src/Task/GetterTask.php deleted file mode 100644 index 60e0e98..0000000 --- a/src/Task/GetterTask.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class GetterTask extends AbstractCacheTask -{ - /** - * @param ProcessState $state - * - * @throws InvalidArgumentException - * @throws ExceptionInterface - */ - public function execute(ProcessState $state) - { - $keyValue = $this->getKeyCache($state); - $cacheItem = $this->getCache()->getItem($keyValue); - - if (!$cacheItem->isHit()) { - $state->setErrorOutput($state->getInput()); - $state->setSkipped(true); - } - - $state->setOutput($cacheItem->get()); - } -} diff --git a/src/Task/SetTask.php b/src/Task/SetTask.php new file mode 100644 index 0000000..95bebe9 --- /dev/null +++ b/src/Task/SetTask.php @@ -0,0 +1,54 @@ +getOptions($state); +// +// /** @var array $input */ +// $input = $state->getInput() ?: []; +// +// /** @var Options $mergedOptions */ +// $mergedOptions = array_merge($options, $input); + /** @var Options $mergedOptions */ + $mergedOptions = $this->getMergedOptions($state); + + $cache = $this->registry->getAdapter($mergedOptions['adapter']); + + $item = $cache->getItem($mergedOptions['key'])->set($mergedOptions['value']); + + $cache->save($item); + } + + /** + * @throws UndefinedOptionsException + * @throws AccessException + */ + protected function configureOptions(OptionsResolver $resolver): void + { + parent::configureOptions($resolver); + + $resolver->setRequired(['value']); + } +} diff --git a/src/Task/SetterTask.php b/src/Task/SetterTask.php deleted file mode 100644 index d8863ad..0000000 --- a/src/Task/SetterTask.php +++ /dev/null @@ -1,74 +0,0 @@ - - */ -class SetterTask extends AbstractCacheTask -{ - /** - * @param ProcessState $state - * - * @throws InvalidArgumentException - * @throws ExceptionInterface - */ - public function execute(ProcessState $state) - { - $keyValue = $this->getKeyCache($state); - $input = $state->getInput(); - - $cacheItem = $this->getCache()->getItem($keyValue); - $cachedValue = $this->transformValue($input, $this->getOption($state, 'value')); - $cacheItem->set($cachedValue); - $this->getCache()->save($cacheItem); - - $state->setOutput($input); - } - - /** - * {@inheritdoc} - */ - protected function configureOptions(OptionsResolver $resolver) - { - parent::configureOptions($resolver); - - $resolver->setRequired( - [ - 'value', - ] - ); - $resolver->setAllowedTypes('value', ['array', 'null']); - - /** @noinspection PhpUnusedParameterInspection */ - $resolver->setNormalizer( - 'value', - function (Options $options, $value) { - $mappingResolver = new OptionsResolver(); - $this->configureMappingOptions($mappingResolver); - - return $mappingResolver->resolve( - $value ?? [] - ); - } - ); - - return $resolver; - } -} diff --git a/src/Transformer/AbstractCacheTransformer.php b/src/Transformer/AbstractCacheTransformer.php deleted file mode 100644 index 8de6775..0000000 --- a/src/Transformer/AbstractCacheTransformer.php +++ /dev/null @@ -1,126 +0,0 @@ - - */ -abstract class AbstractCacheTransformer implements ConfigurableTransformerInterface -{ - use TransformerTrait; - - /** @var CacheItemPoolInterface */ - private $cache; - - /** - * SetterTask constructor. - * - * @param LoggerInterface $logger - * @param PropertyAccessorInterface $accessor - * @param CacheItemPoolInterface $cache - * @param TransformerRegistry $transformerRegistry - */ - public function __construct( - LoggerInterface $logger, - PropertyAccessorInterface $accessor, - CacheItemPoolInterface $cache, - TransformerRegistry $transformerRegistry - ) { - $this->logger = $logger; - $this->accessor = $accessor; - $this->cache = $cache; - $this->transformerRegistry = $transformerRegistry; - } - - /** - * @return CacheItemPoolInterface - */ - public function getCache(): CacheItemPoolInterface - { - return $this->cache; - } - - /** - * @param OptionsResolver $resolver - * - * @throws AccessException - * @throws UndefinedOptionsException - */ - public function configureOptions(OptionsResolver $resolver) - { - $resolver->setRequired( - [ - 'key', - ] - ); - $resolver->setAllowedTypes('key', ['array', 'null']); - - /** @noinspection PhpUnusedParameterInspection */ - $resolver->setNormalizer( - 'key', - function (Options $options, $value) { - $mappingResolver = new OptionsResolver(); - $this->configureMappingOptions($mappingResolver); - - return $mappingResolver->resolve( - $value ?? [] - ); - } - ); - } - - /** - * @param OptionsResolver $resolver - * - * @throws ExceptionInterface - */ - protected function configureMappingOptions(OptionsResolver $resolver) - { - $resolver->setDefaults( - [ - 'code' => null, // Source property - 'constant' => null, - ] - ); - $resolver->setAllowedTypes('code', ['NULL', 'string', 'array']); - - $this->configureTransformersOptions($resolver); - } - - /** - * @param mixed $value - * @param array $options - * - * @return string - */ - protected function getKeyCache($value, array $options = []) - { - $resolver = new OptionsResolver(); - $this->configureOptions($resolver); - $options = $resolver->resolve($options); - - return $this->transformValue($value, $options['key']); - } -} diff --git a/src/Transformer/DeleterTransformer.php b/src/Transformer/DeleterTransformer.php deleted file mode 100644 index 3e3d6bf..0000000 --- a/src/Transformer/DeleterTransformer.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -class DeleterTransformer extends AbstractCacheTransformer -{ - /** - * {@inheritDoc} - * - * @throws \UnexpectedValueException - * @throws InvalidArgumentException - */ - public function transform($value, array $options = []) - { - $keyValue = $this->getKeyCache($value, $options); - - $this->getCache()->deleteItem($keyValue); - - return $value; - } - - /** - * {@inheritDoc} - */ - public function getCode() - { - return 'cache_deleter'; - } -} diff --git a/src/Transformer/GetterTransformer.php b/src/Transformer/GetterTransformer.php deleted file mode 100644 index 012c73c..0000000 --- a/src/Transformer/GetterTransformer.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ -class GetterTransformer extends AbstractCacheTransformer -{ - /** - * {@inheritDoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - parent::configureOptions($resolver); - - $resolver->setDefaults( - [ - 'ignore_not_hit' => false, - ] - ); - $resolver->setAllowedTypes('ignore_not_hit', ['boolean']); - } - - /** - * {@inheritDoc} - * - * @throws \UnexpectedValueException - * @throws InvalidArgumentException - */ - public function transform($value, array $options = []) - { - $keyValue = $this->getKeyCache($value, $options); - $cacheItem = $this->getCache()->getItem($keyValue); - - if (!$cacheItem->isHit()) { - if ($options['ignore_not_hit']) { - return null; - } - - throw new TransformerException($keyValue, 0, 'Cache not hit'); - } - - return $cacheItem->get(); - } - - /** - * {@inheritDoc} - */ - public function getCode() - { - return 'cache_getter'; - } -} diff --git a/src/Transformer/SetterTransformer.php b/src/Transformer/SetterTransformer.php deleted file mode 100644 index bec8ddc..0000000 --- a/src/Transformer/SetterTransformer.php +++ /dev/null @@ -1,84 +0,0 @@ - - */ -class SetterTransformer extends AbstractCacheTransformer -{ - /** - * {@inheritDoc} - * - * @throws \UnexpectedValueException - * @throws InvalidArgumentException - */ - public function transform($value, array $options = []) - { - $keyValue = $this->getKeyCache($value, $options); - - $cacheItem = $this->getCache()->getItem($keyValue); - $resolver = new OptionsResolver(); - $this->configureOptions($resolver); - $options = $resolver->resolve($options); - $cachedValue = $this->transformValue($value, $options['value']); - $cacheItem->set($cachedValue); - $this->getCache()->save($cacheItem); - - return $value; - } - - /** - * {@inheritDoc} - */ - public function getCode() - { - return 'cache_setter'; - } - - /** - * {@inheritDoc} - */ - public function configureOptions(OptionsResolver $resolver) - { - parent::configureOptions($resolver); - - $resolver->setRequired( - [ - 'value', - ] - ); - $resolver->setAllowedTypes('value', ['array', 'null']); - - /** @noinspection PhpUnusedParameterInspection */ - $resolver->setNormalizer( - 'value', - function (Options $options, $value) { - $mappingResolver = new OptionsResolver(); - $this->configureMappingOptions($mappingResolver); - - return $mappingResolver->resolve( - $value ?? [] - ); - } - ); - - return $resolver; - } - - -} From ca6aade20625cda4d9c13606bbba54e5653c5564 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 14:54:51 +0200 Subject: [PATCH 09/33] #4 Apply quality stack --- src/Adapter/Adapter.php | 12 ++++++++++- src/Adapter/AdapterInterface.php | 9 +++++++++ src/CleverAgeCacheProcessBundle.php | 9 ++++++--- .../CleverAgeCacheProcessExtension.php | 9 ++++++--- src/Exception/MissingAdapterException.php | 13 +++++++++++- src/Registry/AdapterRegistry.php | 9 +++++++++ src/Task/AbstractCacheTask.php | 17 ++++++++++++---- src/Task/GetTask.php | 20 +++++++++---------- src/Task/SetTask.php | 17 ++++++++-------- 9 files changed, 84 insertions(+), 31 deletions(-) diff --git a/src/Adapter/Adapter.php b/src/Adapter/Adapter.php index 642c390..4681375 100644 --- a/src/Adapter/Adapter.php +++ b/src/Adapter/Adapter.php @@ -2,6 +2,15 @@ declare(strict_types=1); +/* + * This file is part of the CleverAge/CacheProcessBundle package. + * + * Copyright (c) Clever-Age + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace CleverAge\CacheProcessBundle\Adapter; use Psr\Cache\CacheItemInterface; @@ -12,7 +21,8 @@ class Adapter implements AdapterInterface public function __construct( private readonly \Symfony\Component\Cache\Adapter\AdapterInterface $adapter, private readonly string $code, - ) {} + ) { + } public function getCode(): string { diff --git a/src/Adapter/AdapterInterface.php b/src/Adapter/AdapterInterface.php index ddd8223..d55c0c1 100644 --- a/src/Adapter/AdapterInterface.php +++ b/src/Adapter/AdapterInterface.php @@ -2,6 +2,15 @@ declare(strict_types=1); +/* + * This file is part of the CleverAge/CacheProcessBundle package. + * + * Copyright (c) Clever-Age + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace CleverAge\CacheProcessBundle\Adapter; interface AdapterInterface extends \Symfony\Component\Cache\Adapter\AdapterInterface diff --git a/src/CleverAgeCacheProcessBundle.php b/src/CleverAgeCacheProcessBundle.php index cd2cbc6..30b1c9b 100644 --- a/src/CleverAgeCacheProcessBundle.php +++ b/src/CleverAgeCacheProcessBundle.php @@ -1,8 +1,11 @@ -setAllowedTypes('key', ['string']); } + /** + * @return array + */ protected function getMergedOptions(ProcessState $state): array { + /** @var array $options */ $options = $this->getOptions($state); /** @var array $input */ diff --git a/src/Task/GetTask.php b/src/Task/GetTask.php index 6dde268..36ff51d 100644 --- a/src/Task/GetTask.php +++ b/src/Task/GetTask.php @@ -2,12 +2,18 @@ declare(strict_types=1); +/* + * This file is part of the CleverAge/CacheProcessBundle package. + * + * Copyright (c) Clever-Age + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace CleverAge\CacheProcessBundle\Task; use CleverAge\ProcessBundle\Model\ProcessState; -use Symfony\Component\OptionsResolver\Exception\AccessException; -use Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException; -use Symfony\Component\OptionsResolver\OptionsResolver; /** * @phpstan-type Options array{ @@ -22,14 +28,6 @@ class GetTask extends AbstractCacheTask */ public function execute(ProcessState $state): void { -// /** @var Options $options */ -// $options = $this->getOptions($state); -// -// /** @var array $input */ -// $input = $state->getInput() ?: []; -// -// /** @var Options $mergedOptions */ -// $mergedOptions = array_merge($options, $input); /** @var Options $mergedOptions */ $mergedOptions = $this->getMergedOptions($state); diff --git a/src/Task/SetTask.php b/src/Task/SetTask.php index 95bebe9..797bf5a 100644 --- a/src/Task/SetTask.php +++ b/src/Task/SetTask.php @@ -2,6 +2,15 @@ declare(strict_types=1); +/* + * This file is part of the CleverAge/CacheProcessBundle package. + * + * Copyright (c) Clever-Age + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace CleverAge\CacheProcessBundle\Task; use CleverAge\ProcessBundle\Model\ProcessState; @@ -23,14 +32,6 @@ class SetTask extends AbstractCacheTask */ public function execute(ProcessState $state): void { -// /** @var Options $options */ -// $options = $this->getOptions($state); -// -// /** @var array $input */ -// $input = $state->getInput() ?: []; -// -// /** @var Options $mergedOptions */ -// $mergedOptions = array_merge($options, $input); /** @var Options $mergedOptions */ $mergedOptions = $this->getMergedOptions($state); From 24415bb91f0108727ed5d5489beafc1cdb27f884 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 16:05:49 +0200 Subject: [PATCH 10/33] #4 Add/Update doc --- docs/index.md | 4 +- docs/reference/adapter.md | 48 +++++++++++++++++ docs/reference/tasks/get_task.md | 44 ++++++++++++++++ docs/reference/tasks/set_task.md | 90 ++++++++++++++++++++++++++++++++ 4 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 docs/reference/adapter.md create mode 100644 docs/reference/tasks/get_task.md create mode 100644 docs/reference/tasks/set_task.md diff --git a/docs/index.md b/docs/index.md index b6d8f05..8f4162a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,5 +21,7 @@ CleverAge\CacheProcessBundle\CleverAgeCacheProcessBundle::class => ['all' => tru ## Reference +- [Adapter](reference/adapter.md) - Tasks - - TODO + - [GetTask](reference/tasks/get_task.md) + - [SetTask](reference/tasks/set_task.md) diff --git a/docs/reference/adapter.md b/docs/reference/adapter.md new file mode 100644 index 0000000..a06400c --- /dev/null +++ b/docs/reference/adapter.md @@ -0,0 +1,48 @@ +Adapter +=============== + +Create cache adapter. + +Reference +-------------- + +* **Adapter Service Interface**: `CleverAge\CacheProcessBundle\Adapter\AdapterInterface` + +Options +------- + +| Code | Type | Required | Default | Description | +|-----------|----------|:--------:|---------|------------------------------------------------------------| +| `code` | `string` | **X** | | Service identifier, used by Task adapter option | +| `adapter` | `string` | **X** | | `Symfony\Component\Cache\Adapter\AdapterInterface` service | + +Examples +-------- + +```php + Date: Thu, 19 Jun 2025 16:10:27 +0200 Subject: [PATCH 11/33] Prepare release v1.0.0 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df4a784..487786b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ v1.0.0 * [#3](https://github.com/cleverage/cache-process-bundle/issues/3) Bump dependency "cleverage/process-bundle": "^4.0" * [#5](https://github.com/cleverage/cache-process-bundle/issues/5) Update services according to Symfony best practices. Services should not use autowiring or autoconfiguration. Instead, all services should be defined explicitly. Services must be prefixed with the bundle alias instead of using fully qualified class names => `cleverage_cache_process` +* [#1](https://github.com/cleverage/cache-process-bundle/issues/1) Rework Tasks & Transfomers using AdapterRegistry ### Changes From cd575789bcf4bac2af57eaac8e33b57de6670b3f Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 19 Jun 2025 16:23:24 +0200 Subject: [PATCH 12/33] #4 Apply <10.0 restriction on phpunit/phpunit since configuration file is not compatible with 10.0+ --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index dab2c04..e31aa57 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,7 @@ "phpstan/extension-installer": "*", "phpstan/phpstan": "*", "phpstan/phpstan-symfony": "*", - "phpunit/phpunit": "*", + "phpunit/phpunit": "<10.0", "rector/rector": "*", "roave/security-advisories": "dev-latest", "symfony/test-pack": "^1.1" From f812048521dce7c03d8f9a494f3b243c428c48a7 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 14:29:39 +0200 Subject: [PATCH 13/33] #8 Update rector configuration with minimal version PHP 8.1 --- rector.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/rector.php b/rector.php index 72a2408..b19c112 100644 --- a/rector.php +++ b/rector.php @@ -8,23 +8,19 @@ use Rector\ValueObject\PhpVersion; return RectorConfig::configure() - ->withPhpVersion(PhpVersion::PHP_82) + ->withPhpVersion(PhpVersion::PHP_84) ->withPaths([ __DIR__.'/src', __DIR__.'/tests', ]) - ->withPhpSets(php82: true) + ->withPhpSets(php81: true) // here we can define, what prepared sets of rules will be applied - ->withPreparedSets( - deadCode: true, - codeQuality: true - ) + ->withPreparedSets(deadCode: true, codeQuality: true, symfonyCodeQuality: true) + ->withAttributesSets(symfony: true) ->withSets([ - LevelSetList::UP_TO_PHP_82, + LevelSetList::UP_TO_PHP_81, SymfonySetList::SYMFONY_64, - SymfonySetList::SYMFONY_71, SymfonySetList::SYMFONY_CODE_QUALITY, SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION, - SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES, ]) ; From f27dee1970a2f3a210391dcb2cda2471c75e86ea Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 14:33:17 +0200 Subject: [PATCH 14/33] #8 Update github workflows with PHP 8.1 to 8.4 for Symfony ^6.4 and PHP 8.2 to 8.4 for Symfony ^7.3 --- .github/workflows/quality.yml | 23 ++++++++++++++++++++--- .github/workflows/test.yml | 24 ++++++++++++++++++++---- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 9f1580f..51412f4 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -19,7 +19,7 @@ jobs: - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.2' + php-version: '8.4' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) @@ -36,7 +36,7 @@ jobs: - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.2' + php-version: '8.4' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) @@ -53,10 +53,27 @@ jobs: - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.2' + php-version: '8.4' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) uses: ramsey/composer-install@v3 - name: Rector run: vendor/bin/rector --no-progress-bar --dry-run + + twig-cs-fixer: + name: Twig-CS-Fixer + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install PHP with extensions + uses: shivammathur/setup-php@v2 + with: + php-version: '8.4' + coverage: none + tools: composer:v2 + - name: Install Composer dependencies (locked) + uses: ramsey/composer-install@v3 + - name: Twig-CS-Fixer + run: vendor/bin/twig-cs-fixer lint --report=github diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d7e7a4..0e07db0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,11 +22,17 @@ jobs: php-version: - '8.2' - '8.3' + - '8.4' dependencies: [highest] allowed-to-fail: [false] symfony-require: [''] variant: [normal] include: + - php-version: '8.1' + dependencies: highest + allowed-to-fail: false + symfony-require: 6.4.* + variant: symfony/symfony:"6.4.*" - php-version: '8.2' dependencies: highest allowed-to-fail: false @@ -35,8 +41,8 @@ jobs: - php-version: '8.2' dependencies: highest allowed-to-fail: false - symfony-require: 7.1.* - variant: symfony/symfony:"7.1.*" + symfony-require: 7.3.* + variant: symfony/symfony:"7.3.*" - php-version: '8.3' dependencies: highest allowed-to-fail: false @@ -45,8 +51,18 @@ jobs: - php-version: '8.3' dependencies: highest allowed-to-fail: false - symfony-require: 7.1.* - variant: symfony/symfony:"7.1.*" + symfony-require: 7.3.* + variant: symfony/symfony:"7.3.*" + - php-version: '8.4' + dependencies: highest + allowed-to-fail: false + symfony-require: 6.4.* + variant: symfony/symfony:"6.4.*" + - php-version: '8.4' + dependencies: highest + allowed-to-fail: false + symfony-require: 7.3.* + variant: symfony/symfony:"7.3.*" steps: - name: Checkout From 4a3f55a480a85d38dc2d427e1a76ab1483820c28 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 14:36:12 +0200 Subject: [PATCH 15/33] #8 Update docker configuration with PHP 8.4 --- .docker/php/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/php/Dockerfile b/.docker/php/Dockerfile index f98c3ba..33dd796 100644 --- a/.docker/php/Dockerfile +++ b/.docker/php/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.2-fpm-alpine +FROM php:8.4-fpm-alpine ARG UID ARG GID From 9f37f04bd19effaa212c737a7ff3979bd7146c56 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 14:39:32 +0200 Subject: [PATCH 16/33] #8 Update composer dependencies for symfony ^6.4|^7.3 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e31aa57..c288960 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "require": { "php": ">=8.1", "cleverage/process-bundle": "^4.0", - "symfony/cache": "^6.4|^7.1" + "symfony/cache": "^6.4|^7.3" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", From 8c9cf6668e1a59df7062c22076a37befe414b811 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 14:51:33 +0200 Subject: [PATCH 17/33] #8 Remove twig-cs-fixer from github quality workflows --- .github/workflows/quality.yml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 51412f4..a07ce8b 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -60,20 +60,3 @@ jobs: uses: ramsey/composer-install@v3 - name: Rector run: vendor/bin/rector --no-progress-bar --dry-run - - twig-cs-fixer: - name: Twig-CS-Fixer - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Install PHP with extensions - uses: shivammathur/setup-php@v2 - with: - php-version: '8.4' - coverage: none - tools: composer:v2 - - name: Install Composer dependencies (locked) - uses: ramsey/composer-install@v3 - - name: Twig-CS-Fixer - run: vendor/bin/twig-cs-fixer lint --report=github From 01499e23db3d1e94afe3eb856f788cf05ad1db73 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 21 Aug 2025 16:09:10 +0200 Subject: [PATCH 18/33] Prepare release v1.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 487786b..30af9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v1.1 +------ + +### Changes +* [#8](https://github.com/cleverage/cache-process-bundle/issues/8) Upgrade to Symfony 7.3 & PHP 8.4 + v1.0.0 ------ From 0a97f13cb12864c820e047d91924919bbb39847c Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 13:33:20 +0100 Subject: [PATCH 19/33] Fixes #10 * upgrade composer.json * Dockerfile (opcache is part of php now) * upgrade versions in github actions --- .docker/php/Dockerfile | 5 ++--- .github/workflows/quality.yml | 12 ++++++------ composer.json | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.docker/php/Dockerfile b/.docker/php/Dockerfile index 33dd796..4eda7e2 100644 --- a/.docker/php/Dockerfile +++ b/.docker/php/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.4-fpm-alpine +FROM php:8.5-fpm-alpine ARG UID ARG GID @@ -13,8 +13,7 @@ RUN apk update && apk add \ bash \ icu-dev \ && docker-php-ext-configure intl \ - && docker-php-ext-install intl opcache \ - && docker-php-ext-enable opcache + && docker-php-ext-install intl \ RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \ && sed -i "s/^;date.timezone =.*/date.timezone = Europe\/Paris/" $PHP_INI_DIR/php.ini diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index a07ce8b..f4e4f5b 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -15,11 +15,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.4' + php-version: '8.5' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) @@ -32,11 +32,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.4' + php-version: '8.5' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) @@ -49,11 +49,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: - php-version: '8.4' + php-version: '8.5' coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) diff --git a/composer.json b/composer.json index c288960..575fd76 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "require": { "php": ">=8.1", "cleverage/process-bundle": "^4.0", - "symfony/cache": "^6.4|^7.3" + "symfony/cache": "^6.4|^7.4|^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", From 5585b5a2b8b7d53a4dbc4f8d78c2f9f9f884e750 Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 14:29:14 +0100 Subject: [PATCH 20/33] Fixes #10 * upgrade test.yml * upgrade minimum php version in composer.json * add parallel run in phpcsfixer * remove @PHP71Migration in phpcsfixer * upgrade php version in rector --- .github/workflows/test.yml | 42 +++++++++++++++----------------------- .php-cs-fixer.dist.php | 2 +- composer.json | 4 ++-- rector.php | 9 ++++---- 4 files changed, 25 insertions(+), 32 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0e07db0..c2c7e5d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,50 +23,42 @@ jobs: - '8.2' - '8.3' - '8.4' + - '8.5' dependencies: [highest] allowed-to-fail: [false] symfony-require: [''] variant: [normal] include: - - php-version: '8.1' - dependencies: highest - allowed-to-fail: false - symfony-require: 6.4.* - variant: symfony/symfony:"6.4.*" - php-version: '8.2' - dependencies: highest - allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.2' - dependencies: highest - allowed-to-fail: false - symfony-require: 7.3.* - variant: symfony/symfony:"7.3.*" + symfony-require: 7.4.* + variant: symfony/symfony:"7.4.*" - php-version: '8.3' - dependencies: highest - allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.3' - dependencies: highest - allowed-to-fail: false - symfony-require: 7.3.* - variant: symfony/symfony:"7.3.*" + symfony-require: 7.4.* + variant: symfony/symfony:"7.4.*" - php-version: '8.4' - dependencies: highest - allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.4' - dependencies: highest - allowed-to-fail: false - symfony-require: 7.3.* - variant: symfony/symfony:"7.3.*" - + symfony-require: 7.4.* + variant: symfony/symfony:"7.4.*" + - php-version: '8.4' + symfony-require: 8.0.* + variant: symfony/symfony:"8.0.*" + - php-version: '8.5' + symfony-require: 7.4.* + variant: symfony/symfony:"7.4.*" + - php-version: '8.5' + symfony-require: 8.0.* + variant: symfony/symfony:"8.0.*" steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 68f8bcf..f8779c7 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -23,8 +23,8 @@ EOF; return (new PhpCsFixer\Config()) + ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setRules([ - '@PHP71Migration' => true, '@PHP82Migration' => true, '@PHPUnit75Migration:risky' => true, '@Symfony' => true, diff --git a/composer.json b/composer.json index 575fd76..91a21c8 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ } }, "require": { - "php": ">=8.1", + "php": ">=8.2", "cleverage/process-bundle": "^4.0", "symfony/cache": "^6.4|^7.4|^8.0" }, @@ -40,7 +40,7 @@ "phpstan/extension-installer": "*", "phpstan/phpstan": "*", "phpstan/phpstan-symfony": "*", - "phpunit/phpunit": "<10.0", + "phpunit/phpunit": "*", "rector/rector": "*", "roave/security-advisories": "dev-latest", "symfony/test-pack": "^1.1" diff --git a/rector.php b/rector.php index b19c112..07149e0 100644 --- a/rector.php +++ b/rector.php @@ -8,17 +8,18 @@ use Rector\ValueObject\PhpVersion; return RectorConfig::configure() - ->withPhpVersion(PhpVersion::PHP_84) + ->withPhpVersion(PhpVersion::PHP_85) ->withPaths([ __DIR__.'/src', __DIR__.'/tests', ]) - ->withPhpSets(php81: true) - // here we can define, what prepared sets of rules will be applied + ->withPhpSets(php82: true) + // here we can define what prepared sets of rules will be applied ->withPreparedSets(deadCode: true, codeQuality: true, symfonyCodeQuality: true) ->withAttributesSets(symfony: true) + ->withComposerBased(symfony: true) ->withSets([ - LevelSetList::UP_TO_PHP_81, + LevelSetList::UP_TO_PHP_82, SymfonySetList::SYMFONY_64, SymfonySetList::SYMFONY_CODE_QUALITY, SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION, From 7fdd0d8dc65d047eded5811b29cf87ce5fc44b9e Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 14:30:36 +0100 Subject: [PATCH 21/33] Fixes #10 * fix test.yml --- .github/workflows/test.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c2c7e5d..0eece43 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,30 +30,48 @@ jobs: variant: [normal] include: - php-version: '8.2' + dependencies: highest + allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.2' + dependencies: highest + allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - php-version: '8.3' + dependencies: highest + allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.3' + dependencies: highest + allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - php-version: '8.4' + dependencies: highest + allowed-to-fail: false symfony-require: 6.4.* variant: symfony/symfony:"6.4.*" - php-version: '8.4' + dependencies: highest + allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - php-version: '8.4' + dependencies: highest + allowed-to-fail: false symfony-require: 8.0.* variant: symfony/symfony:"8.0.*" - php-version: '8.5' + dependencies: highest + allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - php-version: '8.5' + dependencies: highest + allowed-to-fail: false symfony-require: 8.0.* variant: symfony/symfony:"8.0.*" steps: From 43102fe365c9e1d27e672a02304082ced0a00559 Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 14:36:37 +0100 Subject: [PATCH 22/33] Fixes #10 * remove php8.5 --- .github/workflows/test.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0eece43..6cf78ff 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,21 +59,21 @@ jobs: allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - - php-version: '8.4' - dependencies: highest - allowed-to-fail: false - symfony-require: 8.0.* - variant: symfony/symfony:"8.0.*" +# - php-version: '8.4' +# dependencies: highest +# allowed-to-fail: false +# symfony-require: 8.0.* +# variant: symfony/symfony:"8.0.*" - php-version: '8.5' dependencies: highest allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" - - php-version: '8.5' - dependencies: highest - allowed-to-fail: false - symfony-require: 8.0.* - variant: symfony/symfony:"8.0.*" +# - php-version: '8.5' +# dependencies: highest +# allowed-to-fail: false +# symfony-require: 8.0.* +# variant: symfony/symfony:"8.0.*" steps: - name: Checkout uses: actions/checkout@v6 From 81ec44f9ffbdb77029c225cb3d8aa2c15a07d5cc Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 14:41:12 +0100 Subject: [PATCH 23/33] Fixes #10 * upgrade phpunit configuration file --- phpunit.xml.dist | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 766495c..d701bea 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,27 +1,27 @@ + failOnWarning="true"> + tests - + src + + + - + \ No newline at end of file From 586c8c71a5a1a5cb6af3b19e501e0a25d028ece3 Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Mon, 8 Dec 2025 14:49:30 +0100 Subject: [PATCH 24/33] Fixes #10 * upgrade phpunit configuration file --- phpunit.xml.dist | 5 ----- 1 file changed, 5 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d701bea..c3e7947 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -9,19 +9,14 @@ beStrictAboutOutputDuringTests="true" failOnRisky="true" failOnWarning="true"> - tests - src - - - \ No newline at end of file From 67204096e8983ba23002d0ac203290d1f717c24c Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Tue, 9 Dec 2025 11:32:15 +0100 Subject: [PATCH 25/33] #10 * Remove `withComposerBased` from Rector config * Simplify `.php-cs-fixer.dist.php` by removing `setParallelConfig` * Update `symfony/cache` constraint in `composer.json` * Revise GitHub Actions workflow to add support for PHP 8.4 and 8.5 * Update CHANGELOG for v2.0 release --- .github/workflows/test.yml | 25 +++++++++++++++---------- .php-cs-fixer.dist.php | 1 - CHANGELOG.md | 9 +++++++++ composer.json | 2 +- rector.php | 1 - 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6cf78ff..27a5a54 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,21 +59,26 @@ jobs: allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" -# - php-version: '8.4' -# dependencies: highest -# allowed-to-fail: false -# symfony-require: 8.0.* -# variant: symfony/symfony:"8.0.*" + - php-version: '8.4' + dependencies: highest + allowed-to-fail: false + symfony-require: 8.* + variant: symfony/symfony:"8.*" + - php-version: '8.5' + dependencies: highest + allowed-to-fail: false + symfony-require: 6.4.* + variant: symfony/symfony:"6.4.*" - php-version: '8.5' dependencies: highest allowed-to-fail: false symfony-require: 7.4.* variant: symfony/symfony:"7.4.*" -# - php-version: '8.5' -# dependencies: highest -# allowed-to-fail: false -# symfony-require: 8.0.* -# variant: symfony/symfony:"8.0.*" + - php-version: '8.5' + dependencies: highest + allowed-to-fail: false + symfony-require: 8.* + variant: symfony/symfony:"8.*" steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index f8779c7..4c25cb0 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -23,7 +23,6 @@ EOF; return (new PhpCsFixer\Config()) - ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setRules([ '@PHP82Migration' => true, '@PHPUnit75Migration:risky' => true, diff --git a/CHANGELOG.md b/CHANGELOG.md index 30af9f8..4f86838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +v2.0 +------ + +### Changes +* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Add support for PHP 8.5 and Symfony 8.* Update phpunit/phpunit to version >10.0 + +### BC breaks +* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Remove support for PHP 8.1 and Symfony 7.3 + v1.1 ------ diff --git a/composer.json b/composer.json index 91a21c8..cc732e2 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "require": { "php": ">=8.2", "cleverage/process-bundle": "^4.0", - "symfony/cache": "^6.4|^7.4|^8.0" + "symfony/cache": "^6.4|^7.4|^8" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", diff --git a/rector.php b/rector.php index 07149e0..0c85e04 100644 --- a/rector.php +++ b/rector.php @@ -17,7 +17,6 @@ // here we can define what prepared sets of rules will be applied ->withPreparedSets(deadCode: true, codeQuality: true, symfonyCodeQuality: true) ->withAttributesSets(symfony: true) - ->withComposerBased(symfony: true) ->withSets([ LevelSetList::UP_TO_PHP_82, SymfonySetList::SYMFONY_64, From 847b16f9d815192baafef9e362ddde73a3173c14 Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Tue, 9 Dec 2025 11:35:22 +0100 Subject: [PATCH 26/33] #10 Add support for `cleverage/process-bundle` ^5.0 in `composer.json` and update CHANGELOG --- CHANGELOG.md | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f86838..891ac32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ v2.0 ------ ### Changes -* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Add support for PHP 8.5 and Symfony 8.* Update phpunit/phpunit to version >10.0 +* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Add support for PHP 8.5 and Symfony 8.* Update phpunit/phpunit to version >10.0 Add support for cleverage/process-bundle ^5.0 ### BC breaks * [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Remove support for PHP 8.1 and Symfony 7.3 diff --git a/composer.json b/composer.json index cc732e2..8f771ea 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,7 @@ }, "require": { "php": ">=8.2", - "cleverage/process-bundle": "^4.0", + "cleverage/process-bundle": "^4.0|^5.0", "symfony/cache": "^6.4|^7.4|^8" }, "require-dev": { From 749bc02489925d7b08b9c7281d3e643952a902fd Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Tue, 9 Dec 2025 11:47:34 +0100 Subject: [PATCH 27/33] #10 Update `composer.json` to require `cleverage/process-bundle ^5.0` only and adjust CHANGELOG accordingly --- CHANGELOG.md | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 891ac32..b268fb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ v2.0 ------ ### Changes -* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Add support for PHP 8.5 and Symfony 8.* Update phpunit/phpunit to version >10.0 Add support for cleverage/process-bundle ^5.0 +* [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Add support for PHP 8.5 and Symfony 8.* Update phpunit/phpunit to version >10.0 Bump version to cleverage/process-bundle ^5.0 ### BC breaks * [#10](https://github.com/cleverage/cache-process-bundle/issues/10) Remove support for PHP 8.1 and Symfony 7.3 diff --git a/composer.json b/composer.json index 8f771ea..b903981 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,7 @@ }, "require": { "php": ">=8.2", - "cleverage/process-bundle": "^4.0|^5.0", + "cleverage/process-bundle": "^5.0", "symfony/cache": "^6.4|^7.4|^8" }, "require-dev": { From f07924aeea282e892110663e9acfdaa4b7f53a49 Mon Sep 17 00:00:00 2001 From: Xavier Marchegay Date: Tue, 9 Dec 2025 14:01:30 +0100 Subject: [PATCH 28/33] #10 Update `symfony/cache` constraint syntax in `composer.json` to improve readability --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b903981..418f2d6 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "require": { "php": ">=8.2", "cleverage/process-bundle": "^5.0", - "symfony/cache": "^6.4|^7.4|^8" + "symfony/cache": "^6.4 || ^7.4 || ^8" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", From f8c05dae8e7f75bab777e3ed761dafd35f1b48f3 Mon Sep 17 00:00:00 2001 From: xmarchegay Date: Tue, 9 Dec 2025 17:18:02 +0100 Subject: [PATCH 29/33] Update PHP-CS-Fixer rules to correct migration config names --- .php-cs-fixer.dist.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 4c25cb0..67620aa 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -24,8 +24,8 @@ return (new PhpCsFixer\Config()) ->setRules([ - '@PHP82Migration' => true, - '@PHPUnit75Migration:risky' => true, + '@PHP8x2Migration' => true, + '@PHPUnit7x5Migration:risky' => true, '@Symfony' => true, '@Symfony:risky' => true, 'protected_to_private' => false, From 967f43f3c84d1dd4b8039f9845aca7a39fbbb668 Mon Sep 17 00:00:00 2001 From: xaviermarchegay Date: Mon, 9 Feb 2026 10:44:02 +0100 Subject: [PATCH 30/33] Fix Dockerfile --- .docker/php/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/php/Dockerfile b/.docker/php/Dockerfile index 4eda7e2..82be215 100644 --- a/.docker/php/Dockerfile +++ b/.docker/php/Dockerfile @@ -13,7 +13,7 @@ RUN apk update && apk add \ bash \ icu-dev \ && docker-php-ext-configure intl \ - && docker-php-ext-install intl \ + && docker-php-ext-install intl RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \ && sed -i "s/^;date.timezone =.*/date.timezone = Europe\/Paris/" $PHP_INI_DIR/php.ini From 8442a68754dc6ed5c85b9173d578a889a3d7671c Mon Sep 17 00:00:00 2001 From: xaviermarchegay Date: Mon, 22 Jun 2026 10:42:05 +0200 Subject: [PATCH 31/33] #13 - dependabot.yml + fix quality --- .github/dependabot.yml | 8 ++++++++ .php-cs-fixer.dist.php | 3 +++ src/CleverAgeCacheProcessBundle.php | 1 + src/Task/SetTask.php | 1 + 4 files changed, 13 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..f5fcaf5 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +# This keeps updated the GitHub actions used in .github/workflows/*.yaml +# See https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" \ No newline at end of file diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 67620aa..94f3224 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -1,5 +1,7 @@ ['header' => $fileHeaderComment], 'modernize_strpos' => true, 'get_class_to_class_keyword' => true, + 'declare_strict_types' => true, ]) ->setRiskyAllowed(true) ->setFinder( diff --git a/src/CleverAgeCacheProcessBundle.php b/src/CleverAgeCacheProcessBundle.php index 30b1c9b..a35c607 100644 --- a/src/CleverAgeCacheProcessBundle.php +++ b/src/CleverAgeCacheProcessBundle.php @@ -33,6 +33,7 @@ public function build(ContainerBuilder $container): void ); } + #[\Override] public function getPath(): string { return \dirname(__DIR__); diff --git a/src/Task/SetTask.php b/src/Task/SetTask.php index 797bf5a..12e5501 100644 --- a/src/Task/SetTask.php +++ b/src/Task/SetTask.php @@ -46,6 +46,7 @@ public function execute(ProcessState $state): void * @throws UndefinedOptionsException * @throws AccessException */ + #[\Override] protected function configureOptions(OptionsResolver $resolver): void { parent::configureOptions($resolver); From fe0db16cdce7982817e5c522e76281964a2afbcd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:45:55 +0000 Subject: [PATCH 32/33] Bump ramsey/composer-install from 3 to 4 Bumps [ramsey/composer-install](https://github.com/ramsey/composer-install) from 3 to 4. - [Release notes](https://github.com/ramsey/composer-install/releases) - [Commits](https://github.com/ramsey/composer-install/compare/v3...v4) --- updated-dependencies: - dependency-name: ramsey/composer-install dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/quality.yml | 6 +++--- .github/workflows/test.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index f4e4f5b..d6bd296 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -23,7 +23,7 @@ jobs: coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) - uses: ramsey/composer-install@v3 + uses: ramsey/composer-install@v4 - name: PHPStan run: vendor/bin/phpstan --no-progress --memory-limit=1G analyse --error-format=github @@ -40,7 +40,7 @@ jobs: coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) - uses: ramsey/composer-install@v3 + uses: ramsey/composer-install@v4 - name: PHP-CS-Fixer run: vendor/bin/php-cs-fixer fix --diff --dry-run --show-progress=none @@ -57,6 +57,6 @@ jobs: coverage: none tools: composer:v2 - name: Install Composer dependencies (locked) - uses: ramsey/composer-install@v3 + uses: ramsey/composer-install@v4 - name: Rector run: vendor/bin/rector --no-progress-bar --dry-run diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 27a5a54..3323bdf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -94,7 +94,7 @@ jobs: if: matrix.variant != 'normal' && !startsWith(matrix.variant, 'symfony/symfony') run: composer require ${{ matrix.variant }} --no-update - name: Install Composer dependencies (${{ matrix.dependencies }}) - uses: ramsey/composer-install@v3 + uses: ramsey/composer-install@v4 with: dependency-versions: ${{ matrix.dependencies }} - name: Run Tests with coverage From fa4a59d48437987f3524400c35718e868307dd4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:45:59 +0000 Subject: [PATCH 33/33] Bump actions/checkout from 6 to 7 Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/quality.yml | 6 +++--- .github/workflows/test.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index f4e4f5b..c103517 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 27a5a54..cf25ff3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -81,7 +81,7 @@ jobs: variant: symfony/symfony:"8.*" steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 with: