From 25e581f06ccd90b20e808883c651174d98088b9b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 1 Jun 2025 15:40:30 +0200 Subject: [PATCH 1/2] Hide packages that are dev- only --- composer.json | 6 ++---- src/Command/BreakPointCommand.php | 5 +++++ src/Command/OpenVersionsCommand.php | 6 ++++++ src/OutdatedComposerFactory.php | 9 ++++++++- src/ValueObject/OutdatedPackage.php | 9 +++++++++ 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 6ee6316..adeb842 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,7 @@ "symfony/console": "^6.4", "symfony/finder": "^7.2", "symfony/process": "^7.2", + "twig/twig": "^3.21", "webmozart/assert": "^1.11" }, "require-dev": { @@ -42,6 +43,7 @@ "symfony/polyfill-intl-normalizer": "*", "symfony/polyfill-mbstring": "*" }, + "minimum-stability": "dev", "config": { "sort-packages": true, "platform-check": false, @@ -64,7 +66,3 @@ } } } - - - - diff --git a/src/Command/BreakPointCommand.php b/src/Command/BreakPointCommand.php index 1be0ccf..4096335 100644 --- a/src/Command/BreakPointCommand.php +++ b/src/Command/BreakPointCommand.php @@ -63,6 +63,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int $composerJsonFilePath ); + if ($outdatedComposer->count() === 0) { + $symfonyStyle->success('All packages are up to date'); + return self::SUCCESS; + } + $symfonyStyle->title( sprintf( 'Found %d outdated package%s', diff --git a/src/Command/OpenVersionsCommand.php b/src/Command/OpenVersionsCommand.php index 1b6ab8d..c887cb3 100644 --- a/src/Command/OpenVersionsCommand.php +++ b/src/Command/OpenVersionsCommand.php @@ -60,6 +60,12 @@ protected function execute(InputInterface $input, OutputInterface $output): int $composerJsonFilePath ); + if ($outdatedComposer->count() === 0) { + $symfonyStyle->success('All packages are up to date. You are the best!'); + + return self::SUCCESS; + } + $symfonyStyle->newLine(); $symfonyStyle->writeln( diff --git a/src/OutdatedComposerFactory.php b/src/OutdatedComposerFactory.php index 83e302b..02d0e54 100644 --- a/src/OutdatedComposerFactory.php +++ b/src/OutdatedComposerFactory.php @@ -6,6 +6,7 @@ use Rector\Jack\Mapper\OutdatedPackageMapper; use Rector\Jack\ValueObject\OutdatedComposer; +use Rector\Jack\ValueObject\OutdatedPackage; /** * @see \Rector\Jack\Tests\OutdatedComposerFactory\OutdatedComposerFactoryTest @@ -24,6 +25,12 @@ public function createOutdatedComposer(array $installedPackages, string $compose { $outdatedPackages = $this->outdatedPackageMapper->mapToObjects($installedPackages, $composerJsonFilePath); - return new OutdatedComposer($outdatedPackages); + // filter out dev packages, those are silently added, when "minimum-stability" is set to "dev" + $nonDevOutdatedPackages = array_filter( + $outdatedPackages, + fn (OutdatedPackage $outdatedPackage): bool => ! $outdatedPackage->lastestIsDevBranch() + ); + + return new OutdatedComposer($nonDevOutdatedPackages); } } diff --git a/src/ValueObject/OutdatedPackage.php b/src/ValueObject/OutdatedPackage.php index f21aac0..5b6b3c5 100644 --- a/src/ValueObject/OutdatedPackage.php +++ b/src/ValueObject/OutdatedPackage.php @@ -58,4 +58,13 @@ public function isVeryOld(): bool $matchYears = Strings::match($this->currentVersionAge, '#[3-9] years#'); return $matchYears !== null; } + + public function lastestIsDevBranch(): bool + { + if (str_starts_with($this->latestVersion, 'dev-')) { + return true; + } + + return str_contains($this->latestVersion, '-dev'); + } } From 25ae8fc68fdd5ea1b686c50b6926d022019dcca6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 1 Jun 2025 15:41:17 +0200 Subject: [PATCH 2/2] cs --- composer.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/composer.json b/composer.json index adeb842..71c5835 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,6 @@ "symfony/console": "^6.4", "symfony/finder": "^7.2", "symfony/process": "^7.2", - "twig/twig": "^3.21", "webmozart/assert": "^1.11" }, "require-dev": { @@ -43,7 +42,6 @@ "symfony/polyfill-intl-normalizer": "*", "symfony/polyfill-mbstring": "*" }, - "minimum-stability": "dev", "config": { "sort-packages": true, "platform-check": false,