diff --git a/src/Command/RaiseToInstalledCommand.php b/src/Command/RaiseToInstalledCommand.php index 43ad3b8..775ce2f 100644 --- a/src/Command/RaiseToInstalledCommand.php +++ b/src/Command/RaiseToInstalledCommand.php @@ -5,7 +5,6 @@ namespace Rector\Jack\Command; use Nette\Utils\FileSystem; -use Nette\Utils\Json; use Rector\Jack\ComposerProcessor\RaiseToInstalledComposerProcessor; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -51,16 +50,16 @@ protected function execute(InputInterface $input, OutputInterface $output): int Assert::fileExists($composerJsonFilePath); $composerJsonContents = FileSystem::read($composerJsonFilePath); - $raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $changedPackages = $raiseToInstalledResult->getChangedPackageVersions(); + $changedPackages = $changedPackageVersionsResult->getChangedPackageVersions(); if ($changedPackages === []) { $symfonyStyle->success('No changes made to "composer.json"'); return self::SUCCESS; } if ($isDryRun === false) { - $changedComposerJsonContents = $raiseToInstalledResult->getComposerJsonContents(); + $changedComposerJsonContents = $changedPackageVersionsResult->getComposerJsonContents(); FileSystem::write($composerJsonFilePath, $changedComposerJsonContents . PHP_EOL, null); } diff --git a/src/ComposerProcessor/OpenVersionsComposerProcessor.php b/src/ComposerProcessor/OpenVersionsComposerProcessor.php index 0135386..ba09441 100644 --- a/src/ComposerProcessor/OpenVersionsComposerProcessor.php +++ b/src/ComposerProcessor/OpenVersionsComposerProcessor.php @@ -13,7 +13,7 @@ /** * @see \Rector\Jack\Tests\ComposerProcessor\OpenVersionsComposerProcessor\OpenVersionsComposerProcessorTest */ -final class OpenVersionsComposerProcessor +final readonly class OpenVersionsComposerProcessor { public function __construct( private NextVersionResolver $nextVersionResolver diff --git a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php index a7ddb00..4165f8d 100644 --- a/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php +++ b/src/ComposerProcessor/RaiseToInstalledComposerProcessor.php @@ -16,11 +16,11 @@ /** * @see \Rector\Jack\Tests\ComposerProcessor\RaiseToInstalledComposerProcessor\RaiseToInstalledComposerProcessorTest */ -final class RaiseToInstalledComposerProcessor +final readonly class RaiseToInstalledComposerProcessor { public function __construct( - private readonly VersionParser $versionParser, - private readonly InstalledVersionResolver $installedVersionResolver, + private VersionParser $versionParser, + private InstalledVersionResolver $installedVersionResolver, ) { } @@ -39,6 +39,10 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes continue; } + if ($this->shouldSkipPackageVersion($packageVersion)) { + continue; + } + $installedVersion = $installedPackagesToVersions[$packageName]; // special case for unions @@ -119,4 +123,9 @@ public function process(string $composerJsonContents): ChangedPackageVersionsRes return new ChangedPackageVersionsResult($composerJsonContents, $changedPackageVersions); } + + private function shouldSkipPackageVersion(string $packageVersion): bool + { + return str_contains($packageVersion, 'dev-'); + } } diff --git a/src/ValueObject/ChangedPackageVersion.php b/src/ValueObject/ChangedPackageVersion.php index 54dabee..7a83ef0 100644 --- a/src/ValueObject/ChangedPackageVersion.php +++ b/src/ValueObject/ChangedPackageVersion.php @@ -4,7 +4,7 @@ namespace Rector\Jack\ValueObject; -final class ChangedPackageVersion +final readonly class ChangedPackageVersion { public function __construct( private string $packageName, diff --git a/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php b/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php index 32de90e..dd493bb 100644 --- a/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php +++ b/src/ValueObject/ComposerProcessorResult/ChangedPackageVersionsResult.php @@ -7,7 +7,7 @@ use Rector\Jack\ValueObject\ChangedPackageVersion; use Webmozart\Assert\Assert; -final class ChangedPackageVersionsResult +final readonly class ChangedPackageVersionsResult { /** * @param ChangedPackageVersion[] $changedPackageVersions diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json new file mode 100644 index 0000000..9d2e743 --- /dev/null +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/Fixture/skip-dev.json @@ -0,0 +1,5 @@ +{ + "require": { + "illuminate/container": "dev-master" + } +} diff --git a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php index f987704..2eb0c5b 100644 --- a/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php +++ b/tests/ComposerProcessor/RaiseToInstalledComposerProcessor/RaiseToInstalledComposerProcessorTest.php @@ -24,20 +24,28 @@ public function test(): void { $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/some-outdated-composer.json'); - $raiseToInstalledResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); - $this->assertCount(1, $raiseToInstalledResult->getChangedPackageVersions()); + $this->assertCount(1, $changedPackageVersionsResult->getChangedPackageVersions()); $this->assertContainsOnlyInstancesOf( ChangedPackageVersion::class, - $raiseToInstalledResult->getChangedPackageVersions() + $changedPackageVersionsResult->getChangedPackageVersions() ); - $changedPackageVersion = $raiseToInstalledResult->getChangedPackageVersions()[0]; + $changedPackageVersion = $changedPackageVersionsResult->getChangedPackageVersions()[0]; $this->assertSame('illuminate/container', $changedPackageVersion->getPackageName()); $this->assertSame('^9.0', $changedPackageVersion->getOldVersion()); // note: this might change in near future; improve to dynamic soon - $this->assertSame('^12.14', $changedPackageVersion->getNewVersion()); + $this->assertStringStartsWith('^12.1', $changedPackageVersion->getNewVersion()); + } + + public function testSkipDev(): void + { + $composerJsonContents = FileSystem::read(__DIR__ . '/Fixture/skip-dev.json'); + $changedPackageVersionsResult = $this->raiseToInstalledComposerProcessor->process($composerJsonContents); + + $this->assertEmpty($changedPackageVersionsResult->getChangedPackageVersions()); } }