From 618853668710cf128e00b13bcb4afe52e407ba6e Mon Sep 17 00:00:00 2001 From: Andreas Wolf Date: Thu, 6 Aug 2026 20:41:58 +0200 Subject: [PATCH 1/2] [TASK] Use self.version for all Fractor package requirements This will ensure that all Fractor packages always use the same version --- packages/fractor-composer-json/composer.json | 6 +++--- packages/fractor-fluid/composer.json | 4 ++-- packages/fractor-htaccess/composer.json | 4 ++-- packages/fractor-phpstan-rules/composer.json | 2 +- packages/fractor-rule-generator/composer.json | 4 ++-- packages/fractor-typoscript/composer.json | 4 ++-- packages/fractor-xliff/composer.json | 4 ++-- packages/fractor-xml/composer.json | 4 ++-- packages/fractor-yaml/composer.json | 4 ++-- packages/typo3-fractor/composer.json | 16 ++++++++-------- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/fractor-composer-json/composer.json b/packages/fractor-composer-json/composer.json index 752d5c4e..f9bdbbd2 100644 --- a/packages/fractor-composer-json/composer.json +++ b/packages/fractor-composer-json/composer.json @@ -20,9 +20,9 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-doc-generator": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-doc-generator": "self.version", + "a9f/fractor-extension-installer": "self.version", "ergebnis/json-printer": "^3.5", "nette/utils": "^4.0", "simonschaufi/composer-json-manipulator": "^1.0", diff --git a/packages/fractor-fluid/composer.json b/packages/fractor-fluid/composer.json index 62c66abf..efffa3a6 100644 --- a/packages/fractor-fluid/composer.json +++ b/packages/fractor-fluid/composer.json @@ -20,8 +20,8 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "nette/utils": "^4.0", "symplify/rule-doc-generator-contracts": "^11.2", "webmozart/assert": "^1.11 || ^2.0" diff --git a/packages/fractor-htaccess/composer.json b/packages/fractor-htaccess/composer.json index a954372a..3588687d 100644 --- a/packages/fractor-htaccess/composer.json +++ b/packages/fractor-htaccess/composer.json @@ -20,8 +20,8 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "nette/utils": "^4.0", "symplify/rule-doc-generator-contracts": "^11.2", "tivie/htaccess-parser": "^0.4.0", diff --git a/packages/fractor-phpstan-rules/composer.json b/packages/fractor-phpstan-rules/composer.json index b3ab2ef1..f1ecb073 100644 --- a/packages/fractor-phpstan-rules/composer.json +++ b/packages/fractor-phpstan-rules/composer.json @@ -15,7 +15,7 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", + "a9f/fractor": "self.version", "phpstan/phpstan": "^2.0.0" }, "minimum-stability": "dev", diff --git a/packages/fractor-rule-generator/composer.json b/packages/fractor-rule-generator/composer.json index b6241b8a..893f0b5e 100644 --- a/packages/fractor-rule-generator/composer.json +++ b/packages/fractor-rule-generator/composer.json @@ -5,8 +5,8 @@ "type": "fractor-extension", "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "nette/utils": "^4.0", "symfony/config": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symfony/console": "^5.4 || ^6.4 || ^7.0 || ^8.0", diff --git a/packages/fractor-typoscript/composer.json b/packages/fractor-typoscript/composer.json index de671f0f..65cbf8d6 100644 --- a/packages/fractor-typoscript/composer.json +++ b/packages/fractor-typoscript/composer.json @@ -20,8 +20,8 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "helmich/typo3-typoscript-parser": "^2.8.0", "symplify/rule-doc-generator-contracts": "^11.2", "webmozart/assert": "^1.11 || ^2.0" diff --git a/packages/fractor-xliff/composer.json b/packages/fractor-xliff/composer.json index 41a95c67..5b74273c 100644 --- a/packages/fractor-xliff/composer.json +++ b/packages/fractor-xliff/composer.json @@ -17,8 +17,8 @@ "php": "^8.2", "ext-dom": "*", "ext-xml": "*", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "simonschaufi/pretty-xml": "^3.0.0", "symplify/rule-doc-generator-contracts": "^11.2", "webmozart/assert": "^1.11 || ^2.0" diff --git a/packages/fractor-xml/composer.json b/packages/fractor-xml/composer.json index bea0de1e..e3f8502b 100644 --- a/packages/fractor-xml/composer.json +++ b/packages/fractor-xml/composer.json @@ -22,8 +22,8 @@ "php": "^8.2", "ext-dom": "*", "ext-xml": "*", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "simonschaufi/pretty-xml": "^3.0.0", "symplify/rule-doc-generator-contracts": "^11.2", "webmozart/assert": "^1.11 || ^2.0" diff --git a/packages/fractor-yaml/composer.json b/packages/fractor-yaml/composer.json index bf95db35..bc863a9f 100644 --- a/packages/fractor-yaml/composer.json +++ b/packages/fractor-yaml/composer.json @@ -20,8 +20,8 @@ ], "require": { "php": "^8.2", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", "symfony/yaml": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symplify/rule-doc-generator-contracts": "^11.2", "webmozart/assert": "^1.11 || ^2.0" diff --git a/packages/typo3-fractor/composer.json b/packages/typo3-fractor/composer.json index a011ba3d..cccf4d55 100644 --- a/packages/typo3-fractor/composer.json +++ b/packages/typo3-fractor/composer.json @@ -22,14 +22,14 @@ "require": { "php": "^8.2", "ext-dom": "*", - "a9f/fractor": "^1.0", - "a9f/fractor-extension-installer": "^1.0", - "a9f/fractor-fluid": "^1.0", - "a9f/fractor-htaccess": "^1.0", - "a9f/fractor-typoscript": "^1.0", - "a9f/fractor-xliff": "^1.0", - "a9f/fractor-xml": "^1.0", - "a9f/fractor-yaml": "^1.0", + "a9f/fractor": "self.version", + "a9f/fractor-extension-installer": "self.version", + "a9f/fractor-fluid": "self.version", + "a9f/fractor-htaccess": "self.version", + "a9f/fractor-typoscript": "self.version", + "a9f/fractor-xliff": "self.version", + "a9f/fractor-xml": "self.version", + "a9f/fractor-yaml": "self.version", "symplify/rule-doc-generator-contracts": "^11.2" }, "minimum-stability": "dev", From 9f04871d77ecc1ce9070f1df0cf4d17b4daa83fc Mon Sep 17 00:00:00 2001 From: Andreas Wolf Date: Thu, 6 Aug 2026 21:36:02 +0200 Subject: [PATCH 2/2] [TASK] Use Composer to determine package version This removes all hardcoded instances of the Fractor package versions, and replaces it with Composer's `InstalledVersions` API. --- monorepo-builder.php | 14 -------- .../Application/FractorApplication.php | 5 ++- .../typo3-fractor/bin/typo3-fractor-init.php | 2 +- .../FractorApplicationReleaseWriter.php | 29 ---------------- src/Release/FractorInitReleaseWriter.php | 24 ------------- src/Release/FractorInitTestReleaseWriter.php | 28 --------------- ...FractorApplicationReleaseVersionWorker.php | 27 --------------- .../DefineFractorInitReleaseVersionWorker.php | 27 --------------- ...ineFractorInitTestReleaseVersionWorker.php | 27 --------------- ...FractorApplicationReleaseVersionWorker.php | 34 ------------------- 10 files changed, 3 insertions(+), 214 deletions(-) delete mode 100644 src/Release/FractorApplicationReleaseWriter.php delete mode 100644 src/Release/FractorInitReleaseWriter.php delete mode 100644 src/Release/FractorInitTestReleaseWriter.php delete mode 100644 src/Release/ReleaseWorker/DefineFractorApplicationReleaseVersionWorker.php delete mode 100644 src/Release/ReleaseWorker/DefineFractorInitReleaseVersionWorker.php delete mode 100644 src/Release/ReleaseWorker/DefineFractorInitTestReleaseVersionWorker.php delete mode 100644 src/Release/ReleaseWorker/UpdateFractorApplicationReleaseVersionWorker.php diff --git a/monorepo-builder.php b/monorepo-builder.php index 0bd72719..e162dcdd 100644 --- a/monorepo-builder.php +++ b/monorepo-builder.php @@ -2,12 +2,6 @@ declare(strict_types=1); -use a9f\FractorMonorepo\Release\FractorApplicationReleaseWriter; -use a9f\FractorMonorepo\Release\FractorInitReleaseWriter; -use a9f\FractorMonorepo\Release\FractorInitTestReleaseWriter; -use a9f\FractorMonorepo\Release\ReleaseWorker\DefineFractorApplicationReleaseVersionWorker; -use a9f\FractorMonorepo\Release\ReleaseWorker\DefineFractorInitReleaseVersionWorker; -use a9f\FractorMonorepo\Release\ReleaseWorker\DefineFractorInitTestReleaseVersionWorker; use Symplify\MonorepoBuilder\ComposerJsonManipulator\ValueObject\ComposerJsonSection; use Symplify\MonorepoBuilder\Config\MBConfig; use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker; @@ -18,11 +12,6 @@ require_once __DIR__ . '/vendor/autoload.php'; return static function (MBConfig $mbConfig): void { - $mbConfig->services() - ->set(FractorApplicationReleaseWriter::class) - ->set(FractorInitReleaseWriter::class) - ->set(FractorInitTestReleaseWriter::class); - $mbConfig->packageDirectories([__DIR__ . '/packages']); $mbConfig->defaultBranch('main'); $mbConfig->dataToRemove([ @@ -35,9 +24,6 @@ ]); // release workers - in order of execution $mbConfig->workers([ - DefineFractorApplicationReleaseVersionWorker::class, - DefineFractorInitReleaseVersionWorker::class, - DefineFractorInitTestReleaseVersionWorker::class, SetCurrentMutualDependenciesReleaseWorker::class, TagVersionReleaseWorker::class, PushTagReleaseWorker::class, diff --git a/packages/fractor/src/Console/Application/FractorApplication.php b/packages/fractor/src/Console/Application/FractorApplication.php index e1326d86..3c2d673b 100644 --- a/packages/fractor/src/Console/Application/FractorApplication.php +++ b/packages/fractor/src/Console/Application/FractorApplication.php @@ -11,11 +11,10 @@ final class FractorApplication extends Application { public const NAME = 'Fractor'; - public const FRACTOR_CONSOLE_VERSION = '1.0.0'; - public function __construct() { - parent::__construct(self::NAME, self::FRACTOR_CONSOLE_VERSION); + $fractorVersion = \Composer\InstalledVersions::getPrettyVersion('a9f/fractor') ?? 'dev'; + parent::__construct(self::NAME, $fractorVersion); // run this command, if no command name is provided $this->setDefaultCommand('process'); } diff --git a/packages/typo3-fractor/bin/typo3-fractor-init.php b/packages/typo3-fractor/bin/typo3-fractor-init.php index dc27aa61..eb9c3ab0 100644 --- a/packages/typo3-fractor/bin/typo3-fractor-init.php +++ b/packages/typo3-fractor/bin/typo3-fractor-init.php @@ -29,7 +29,7 @@ (new SingleCommandApplication()) ->setName('Initialize TYPO3-Fractor configuration') - ->setVersion('1.0.0') + ->setVersion(\Composer\InstalledVersions::getPrettyVersion('a9f/typo3-fractor') ?? 'dev') ->setDescription('Initializes a bare configuration to start with your TYPO3 upgrade') ->setCode(static function (InputInterface $input, OutputInterface $output): int { $projectDirectory = getcwd(); diff --git a/src/Release/FractorApplicationReleaseWriter.php b/src/Release/FractorApplicationReleaseWriter.php deleted file mode 100644 index ad45f899..00000000 --- a/src/Release/FractorApplicationReleaseWriter.php +++ /dev/null @@ -1,29 +0,0 @@ -setVersion\(\')\d+\.\d+\.\d+/', '->setVersion(\'' . $version); - FileSystem::write($typo3FractorInitFile, $content); - } - - public function getDescription(string $version): string - { - return \sprintf('Add "%s" to "%s"', $version, 'packages/typo3-fractor/bin/typo3-fractor-init.php'); - } -} diff --git a/src/Release/FractorInitTestReleaseWriter.php b/src/Release/FractorInitTestReleaseWriter.php deleted file mode 100644 index 71fbad40..00000000 --- a/src/Release/FractorInitTestReleaseWriter.php +++ /dev/null @@ -1,28 +0,0 @@ -setVersion\(\')\d+\.\d+\.\d+/', '->setVersion(\'' . $version); - FileSystem::write($typo3FractorInitFile, $content); - } - - public function getDescription(string $version): string - { - return \sprintf( - 'Add "%s" to "%s"', - $version, - 'packages/typo3-fractor/tests/Functional/Bin/InitCommandTest.php' - ); - } -} diff --git a/src/Release/ReleaseWorker/DefineFractorApplicationReleaseVersionWorker.php b/src/Release/ReleaseWorker/DefineFractorApplicationReleaseVersionWorker.php deleted file mode 100644 index 47a5508e..00000000 --- a/src/Release/ReleaseWorker/DefineFractorApplicationReleaseVersionWorker.php +++ /dev/null @@ -1,27 +0,0 @@ -fractorApplicationReleaseWriter->getDescription($version->getVersionString()); - } - - public function work(Version $version): void - { - $this->fractorApplicationReleaseWriter->write($version->getVersionString()); - } -} diff --git a/src/Release/ReleaseWorker/DefineFractorInitReleaseVersionWorker.php b/src/Release/ReleaseWorker/DefineFractorInitReleaseVersionWorker.php deleted file mode 100644 index d3fa616a..00000000 --- a/src/Release/ReleaseWorker/DefineFractorInitReleaseVersionWorker.php +++ /dev/null @@ -1,27 +0,0 @@ -fractorInitReleaseWriter->getDescription($version->getVersionString()); - } - - public function work(Version $version): void - { - $this->fractorInitReleaseWriter->write($version->getVersionString()); - } -} diff --git a/src/Release/ReleaseWorker/DefineFractorInitTestReleaseVersionWorker.php b/src/Release/ReleaseWorker/DefineFractorInitTestReleaseVersionWorker.php deleted file mode 100644 index 68a50a8b..00000000 --- a/src/Release/ReleaseWorker/DefineFractorInitTestReleaseVersionWorker.php +++ /dev/null @@ -1,27 +0,0 @@ -fractorInitTestReleaseWriter->getDescription($version->getVersionString()); - } - - public function work(Version $version): void - { - $this->fractorInitTestReleaseWriter->write($version->getVersionString()); - } -} diff --git a/src/Release/ReleaseWorker/UpdateFractorApplicationReleaseVersionWorker.php b/src/Release/ReleaseWorker/UpdateFractorApplicationReleaseVersionWorker.php deleted file mode 100644 index 34b1225f..00000000 --- a/src/Release/ReleaseWorker/UpdateFractorApplicationReleaseVersionWorker.php +++ /dev/null @@ -1,34 +0,0 @@ -fractorApplicationReleaseWriter->getDescription($this->getVersionDev($version)); - } - - public function work(Version $version): void - { - $this->fractorApplicationReleaseWriter->write($this->getVersionDev($version)); - } - - private function getVersionDev(Version $version): string - { - return $this->versionUtils->getNextAliasFormat($version); - } -}