From 67b3f7c9c4723693c472bc0a9bf3288b74fae9ff Mon Sep 17 00:00:00 2001 From: Hugo Monteiro Date: Mon, 23 Feb 2026 17:18:34 +0000 Subject: [PATCH 1/3] Add Symfony 8 support and update CI matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert XML DI config to PHP DSL since XmlFileLoader was removed in Symfony 8. Bump minimum Symfony version to 5.4 and add ~8.0 constraint. Update CI to test PHP 8.1–8.5 and drop EOL PHP 7.4/8.0. --- .github/workflows/run-tests.yml | 14 ++++---- .../BazingaJsTranslationExtension.php | 8 ++--- Resources/config/controllers.php | 23 ++++++++++++ Resources/config/controllers.xml | 22 ------------ Resources/config/services.php | 35 +++++++++++++++++++ Resources/config/services.xml | 30 ---------------- .../app/config/disable_annotations.yml | 3 +- composer.json | 23 ++++++------ 8 files changed, 82 insertions(+), 76 deletions(-) create mode 100644 Resources/config/controllers.php delete mode 100644 Resources/config/controllers.xml create mode 100644 Resources/config/services.php delete mode 100644 Resources/config/services.xml diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 7e03d749..fa0d61d2 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -9,7 +9,7 @@ on: env: fail-fast: true PHPUNIT_FLAGS: "-v" - SYMFONY_REQUIRE: ">=4.4" + SYMFONY_REQUIRE: ">=5.4" XDEBUG_MODE: "coverage" jobs: @@ -21,21 +21,21 @@ jobs: strategy: fail-fast: false matrix: - php-version: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4'] + php-version: ['8.1', '8.2', '8.3', '8.4', '8.5'] dependencies: [highest] allowed-to-fail: [false] symfony-version: [latest] include: - - php-version: nightly + - php-version: '8.5' dependencies: highest allowed-to-fail: true symfony-version: latest steps: - name: "Checkout code" - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v4 - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.7.0 + uses: shivammathur/setup-php@v2 with: coverage: xdebug php-version: ${{ matrix.php-version }} @@ -63,10 +63,10 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v4 - name: "Setup node" - uses: actions/setup-node@v4.0.3 + uses: actions/setup-node@v4 with: node-version: 'lts/*' diff --git a/DependencyInjection/BazingaJsTranslationExtension.php b/DependencyInjection/BazingaJsTranslationExtension.php index 2859b28a..e976804c 100644 --- a/DependencyInjection/BazingaJsTranslationExtension.php +++ b/DependencyInjection/BazingaJsTranslationExtension.php @@ -4,7 +4,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\Definition\Processor; @@ -22,9 +22,9 @@ public function load(array $configs, ContainerBuilder $container): void $configuration = new Configuration($container->getParameter('kernel.debug')); $config = $processor->processConfiguration($configuration, $configs); - $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('services.xml'); - $loader->load('controllers.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('services.php'); + $loader->load('controllers.php'); $container ->getDefinition('bazinga.jstranslation.controller') diff --git a/Resources/config/controllers.php b/Resources/config/controllers.php new file mode 100644 index 00000000..e30ba859 --- /dev/null +++ b/Resources/config/controllers.php @@ -0,0 +1,23 @@ +parameters(); + $parameters->set('bazinga.jstranslation.controller.class', \Bazinga\Bundle\JsTranslationBundle\Controller\Controller::class); + + $services = $container->services(); + + $services->set('bazinga.jstranslation.controller', '%bazinga.jstranslation.controller.class%') + ->public() + ->args([ + service('translator'), + service('twig'), + service('bazinga.jstranslation.translation_finder'), + '%kernel.cache_dir%/bazinga-js-translation', + '%kernel.debug%', + abstract_arg('fallback locale'), + abstract_arg('default domain'), + abstract_arg('http cache time'), + ]); +}; diff --git a/Resources/config/controllers.xml b/Resources/config/controllers.xml deleted file mode 100644 index 86080cda..00000000 --- a/Resources/config/controllers.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Bazinga\Bundle\JsTranslationBundle\Controller\Controller - - - - - - - - %kernel.cache_dir%/bazinga-js-translation - %kernel.debug% - - - - - - diff --git a/Resources/config/services.php b/Resources/config/services.php new file mode 100644 index 00000000..7bec9d51 --- /dev/null +++ b/Resources/config/services.php @@ -0,0 +1,35 @@ +parameters(); + $parameters->set('bazinga.jstranslation.translation_finder.class', \Bazinga\Bundle\JsTranslationBundle\Finder\TranslationFinder::class); + $parameters->set('bazinga.jstranslation.translation_dumper.class', \Bazinga\Bundle\JsTranslationBundle\Dumper\TranslationDumper::class); + + $services = $container->services(); + + $services->set('bazinga.jstranslation.translation_finder', '%bazinga.jstranslation.translation_finder.class%') + ->public() + ->args([[]]); + + $services->set('bazinga.jstranslation.translation_dumper', '%bazinga.jstranslation.translation_dumper.class%') + ->public() + ->args([ + service('twig'), + service('bazinga.jstranslation.translation_finder'), + service('filesystem'), + abstract_arg('fallback locale'), + abstract_arg('default domain'), + abstract_arg('active locales'), + abstract_arg('active domains'), + ]); + + $services->set('bazinga.jstranslation.dump_command', \Bazinga\Bundle\JsTranslationBundle\Command\DumpCommand::class) + ->public() + ->args([ + service('bazinga.jstranslation.translation_dumper'), + '%kernel.project_dir%', + ]) + ->tag('console.command', ['command' => 'bazinga:js-translation:dump']); +}; diff --git a/Resources/config/services.xml b/Resources/config/services.xml deleted file mode 100644 index f2fa955a..00000000 --- a/Resources/config/services.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Bazinga\Bundle\JsTranslationBundle\Finder\TranslationFinder - Bazinga\Bundle\JsTranslationBundle\Dumper\TranslationDumper - - - - - - - - - - - - - - - - - - %kernel.project_dir% - - - - diff --git a/Tests/Fixtures/app/config/disable_annotations.yml b/Tests/Fixtures/app/config/disable_annotations.yml index a06589d8..eec787f3 100644 --- a/Tests/Fixtures/app/config/disable_annotations.yml +++ b/Tests/Fixtures/app/config/disable_annotations.yml @@ -1,2 +1 @@ -framework: - annotations: { enabled: false } +# annotations config was removed in Symfony 8 diff --git a/composer.json b/composer.json index 258d5ea8..da6e8893 100644 --- a/composer.json +++ b/composer.json @@ -12,19 +12,20 @@ ], "require": { "php": ">=7.4", - "symfony/framework-bundle": "~4.4|~5.0|~6.0|~7.0", - "symfony/finder": "~4.4|~5.0|~6.0|~7.0", - "symfony/console": "~4.4|~5.0|~6.0|~7.0", - "symfony/intl": "~4.4|~5.0|~6.0|~7.0", - "symfony/translation": "~4.4|~5.0|~6.0|~7.0", - "symfony/twig-bundle": "~4.4|~5.0|~6.0|~7.0" + "symfony/dependency-injection": "~5.4|~6.0|~7.0|~8.0", + "symfony/framework-bundle": "~5.4|~6.0|~7.0|~8.0", + "symfony/finder": "~5.4|~6.0|~7.0|~8.0", + "symfony/console": "~5.4|~6.0|~7.0|~8.0", + "symfony/intl": "~5.4|~6.0|~7.0|~8.0", + "symfony/translation": "~5.4|~6.0|~7.0|~8.0", + "symfony/twig-bundle": "~5.4|~6.0|~7.0|~8.0" }, "require-dev": { - "symfony/asset": "~4.4|~5.0|~6.0|~7.0", - "symfony/filesystem": "~4.4|~5.0|~6.0|~7.0", - "symfony/yaml": "~4.4|~5.0|~6.0|~7.0", - "symfony/browser-kit": "~4.4|~5.0|~6.0|~7.0", - "symfony/phpunit-bridge": "^5.0|^6.0|~7.0", + "symfony/asset": "~5.4|~6.0|~7.0|~8.0", + "symfony/filesystem": "~5.4|~6.0|~7.0|~8.0", + "symfony/yaml": "~5.4|~6.0|~7.0|~8.0", + "symfony/browser-kit": "~5.4|~6.0|~7.0|~8.0", + "symfony/phpunit-bridge": "^5.4|^6.0|~7.0|~8.0", "phpunit/phpunit": "^4.8|~5.7|~6.5|~8" }, "replace": { From 4973edd7198dc5d6e983636915378fc35b35d844 Mon Sep 17 00:00:00 2001 From: Hugo Monteiro Date: Mon, 23 Feb 2026 18:04:47 +0000 Subject: [PATCH 2/3] Apply review feedback on Symfony 8 support PR - Remove global SYMFONY_REQUIRE env var from CI (use composer.json constraints) - Add PHP 7.4 and 8.0 back to CI matrix to match composer.json requirement - Upgrade actions/checkout from v4 to v6 - Load disable_annotations.yml conditionally for Symfony < 8 only --- .github/workflows/run-tests.yml | 7 +++---- Tests/Fixtures/app/AppKernel.php | 4 +++- Tests/Fixtures/app/config/disable_annotations.yml | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index fa0d61d2..1a7c0337 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -9,7 +9,6 @@ on: env: fail-fast: true PHPUNIT_FLAGS: "-v" - SYMFONY_REQUIRE: ">=5.4" XDEBUG_MODE: "coverage" jobs: @@ -21,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - php-version: ['8.1', '8.2', '8.3', '8.4', '8.5'] + php-version: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5'] dependencies: [highest] allowed-to-fail: [false] symfony-version: [latest] @@ -32,7 +31,7 @@ jobs: symfony-version: latest steps: - name: "Checkout code" - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 @@ -63,7 +62,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: "Setup node" uses: actions/setup-node@v4 diff --git a/Tests/Fixtures/app/AppKernel.php b/Tests/Fixtures/app/AppKernel.php index 7d007a2e..71806651 100644 --- a/Tests/Fixtures/app/AppKernel.php +++ b/Tests/Fixtures/app/AppKernel.php @@ -68,7 +68,9 @@ public function registerContainerConfiguration(LoaderInterface $loader): void { $loader->load(__DIR__.'/config/'.$this->environment.'.yml'); $loader->load(__DIR__.'/config/base_config.yml'); - $loader->load(__DIR__.'/config/disable_annotations.yml'); + if (self::VERSION_ID < 80000) { + $loader->load(__DIR__.'/config/disable_annotations.yml'); + } if (self::VERSION_ID < 40200 && file_exists(__DIR__.'/Resources/translations') === false) { self::recurseCopy(__DIR__.'/../translations', __DIR__.'/Resources/translations'); diff --git a/Tests/Fixtures/app/config/disable_annotations.yml b/Tests/Fixtures/app/config/disable_annotations.yml index eec787f3..a06589d8 100644 --- a/Tests/Fixtures/app/config/disable_annotations.yml +++ b/Tests/Fixtures/app/config/disable_annotations.yml @@ -1 +1,2 @@ -# annotations config was removed in Symfony 8 +framework: + annotations: { enabled: false } From 0e4ebc643b3adebe719036fcecfae72c11b0d8ac Mon Sep 17 00:00:00 2001 From: Hugo Monteiro Date: Tue, 24 Feb 2026 08:53:07 +0000 Subject: [PATCH 3/3] fix --- .github/workflows/run-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 1a7c0337..e8877943 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -25,7 +25,7 @@ jobs: allowed-to-fail: [false] symfony-version: [latest] include: - - php-version: '8.5' + - php-version: nightly dependencies: highest allowed-to-fail: true symfony-version: latest