From 5584d41d77647e02602ed214e67aadc49aa26135 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 21 May 2025 19:39:34 +0200 Subject: [PATCH] make version age compatbile with composer 2.7 --- src/Command/BreakPointCommand.php | 17 +++++++++++------ src/Mapper/OutdatedPackageMapper.php | 2 +- src/ValueObject/OutdatedPackage.php | 9 +++++++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Command/BreakPointCommand.php b/src/Command/BreakPointCommand.php index 4f01e8f..1be0ccf 100644 --- a/src/Command/BreakPointCommand.php +++ b/src/Command/BreakPointCommand.php @@ -76,12 +76,17 @@ protected function execute(InputInterface $input, OutputInterface $output): int sprintf('The "%s" package is outdated', $outdatedPackage->getName()) ); - $symfonyStyle->writeln(sprintf( - ' * Your version %s is %s', - $outdatedPackage->getCurrentVersion(), - $outdatedPackage->isVeryOld() ? 'red' : 'yellow', - $outdatedPackage->getCurrentVersionAge(), - )); + if ($outdatedPackage->getCurrentVersionAge()) { + $symfonyStyle->writeln(sprintf( + ' * Your version %s is %s', + $outdatedPackage->getCurrentVersion(), + $outdatedPackage->isVeryOld() ? 'red' : 'yellow', + $outdatedPackage->getCurrentVersionAge(), + )); + } else { + // composer 2.7- compatible + $symfonyStyle->writeln(sprintf(' * Your version is %s', $outdatedPackage->getCurrentVersion())); + } $symfonyStyle->writeln(sprintf(' * Bump to %s', $outdatedPackage->getLatestVersion())); $symfonyStyle->newLine(); diff --git a/src/Mapper/OutdatedPackageMapper.php b/src/Mapper/OutdatedPackageMapper.php index 28aa405..f8fb34c 100644 --- a/src/Mapper/OutdatedPackageMapper.php +++ b/src/Mapper/OutdatedPackageMapper.php @@ -32,7 +32,7 @@ public function mapToObjects(array $outdatedPackages, string $composerJsonFilePa $composerVersions, $isProd, $data['latest'], - $data['release-age'] + $data['release-age'] ?? null ); }, $outdatedPackages); } diff --git a/src/ValueObject/OutdatedPackage.php b/src/ValueObject/OutdatedPackage.php index c01d674..f21aac0 100644 --- a/src/ValueObject/OutdatedPackage.php +++ b/src/ValueObject/OutdatedPackage.php @@ -14,7 +14,8 @@ public function __construct( private string $composerVersion, private bool $isProd, private string $latestVersion, - private string $currentVersionAge, + // nullable on composer 2.7- + private ?string $currentVersionAge, ) { } @@ -43,13 +44,17 @@ public function getLatestVersion(): string return $this->latestVersion; } - public function getCurrentVersionAge(): string + public function getCurrentVersionAge(): ?string { return $this->currentVersionAge; } public function isVeryOld(): bool { + if ($this->currentVersionAge === null) { + return true; + } + $matchYears = Strings::match($this->currentVersionAge, '#[3-9] years#'); return $matchYears !== null; }