|
8 | 8 | use Nette\Utils\Json; |
9 | 9 | use Rector\Jack\Composer\ComposerOutdatedResponseProvider; |
10 | 10 | use Rector\Jack\Composer\NextVersionResolver; |
| 11 | +use Rector\Jack\ComposerProcessor\OpenVersionsComposerProcessor; |
11 | 12 | use Rector\Jack\Enum\ComposerKey; |
12 | | -use Rector\Jack\FileSystem\ComposerJsonPackageVersionUpdater; |
13 | 13 | use Rector\Jack\OutdatedComposerFactory; |
14 | 14 | use Symfony\Component\Console\Command\Command; |
15 | 15 | use Symfony\Component\Console\Input\InputInterface; |
|
20 | 20 | final class OpenVersionsCommand extends Command |
21 | 21 | { |
22 | 22 | public function __construct( |
23 | | - private readonly NextVersionResolver $nextVersionResolver, |
| 23 | + // private readonly NextVersionResolver $nextVersionResolver, |
24 | 24 | private readonly OutdatedComposerFactory $outdatedComposerFactory, |
25 | 25 | private readonly ComposerOutdatedResponseProvider $composerOutdatedResponseProvider, |
| 26 | + private readonly OpenVersionsComposerProcessor $openVersionsComposerProcessor, |
26 | 27 | ) { |
27 | 28 | parent::__construct(); |
28 | 29 | } |
@@ -93,56 +94,40 @@ protected function execute(InputInterface $input, OutputInterface $output): int |
93 | 94 |
|
94 | 95 | $composerJsonContents = FileSystem::read($composerJsonFilePath); |
95 | 96 |
|
96 | | - $outdatedPackages = $outdatedComposer->getPackagesShuffled($onlyDev, $packagePrefix); |
97 | | - |
98 | | - $openedPackageCount = 0; |
99 | | - foreach ($outdatedPackages as $outdatedPackage) { |
100 | | - $composerVersion = $outdatedPackage->getComposerVersion(); |
101 | | - |
102 | | - // already filled with open version |
103 | | - if (str_contains($composerVersion, '|')) { |
104 | | - continue; |
105 | | - } |
106 | | - |
107 | | - // convert composer version to next version |
108 | | - $nextVersion = $this->nextVersionResolver->resolve($outdatedPackage->getName(), $composerVersion); |
109 | | - $openedVersion = $composerVersion . '|' . $nextVersion; |
110 | | - |
111 | | - // replace using regex, to keep original composer.json format |
112 | | - $composerJsonContents = ComposerJsonPackageVersionUpdater::update( |
113 | | - $composerJsonContents, |
114 | | - $outdatedPackage->getName(), |
115 | | - $openedVersion |
116 | | - ); |
117 | | - |
118 | | - $symfonyStyle->writeln(sprintf( |
119 | | - ' * Opened "<fg=green>%s</>" package to "<fg=yellow>%s</>" version', |
120 | | - $outdatedPackage->getName(), |
121 | | - $openedVersion |
122 | | - )); |
| 97 | + $changedPackageVersionsResult = $this->openVersionsComposerProcessor->process( |
| 98 | + $composerJsonContents, |
| 99 | + $outdatedComposer, |
| 100 | + $limit, |
| 101 | + $onlyDev, |
| 102 | + $packagePrefix |
| 103 | + ); |
123 | 104 |
|
124 | | - ++$openedPackageCount; |
125 | | - if ($openedPackageCount >= $limit) { |
126 | | - // we've reached the limit, so we can stop |
127 | | - break; |
128 | | - } |
129 | | - } |
| 105 | + $openedPackages = $changedPackageVersionsResult->getChangedPackageVersions(); |
| 106 | + $changedComposerJson = $changedPackageVersionsResult->getComposerJsonContents(); |
130 | 107 |
|
131 | 108 | if ($isDryRun === false) { |
132 | 109 | // update composer.json file, only if no --dry-run |
133 | | - FileSystem::write($composerJsonFilePath, $composerJsonContents . PHP_EOL, null); |
| 110 | + FileSystem::write($composerJsonFilePath, $changedComposerJson . PHP_EOL, null); |
134 | 111 | } |
135 | 112 |
|
136 | 113 | $symfonyStyle->success( |
137 | 114 | sprintf( |
138 | 115 | '%d packages %s opened up to the next nearest version.%s%s "composer update" to push versions up', |
139 | | - $openedPackageCount, |
| 116 | + count($openedPackages), |
140 | 117 | $isDryRun ? 'would be (is "--dry-run")' : 'were', |
141 | 118 | PHP_EOL, |
142 | 119 | $isDryRun ? 'Then you would run' : 'Now run' |
143 | 120 | ) |
144 | 121 | ); |
145 | 122 |
|
| 123 | + foreach ($openedPackages as $openedPackage) { |
| 124 | + $symfonyStyle->writeln(sprintf( |
| 125 | + ' * Opened "<fg=green>%s</>" package to "<fg=yellow>%s</>" version', |
| 126 | + $openedPackage->getPackageName(), |
| 127 | + $openedPackage->getNewVersion() |
| 128 | + )); |
| 129 | + } |
| 130 | + |
146 | 131 | return self::SUCCESS; |
147 | 132 | } |
148 | 133 | } |
0 commit comments