|
4 | 4 |
|
5 | 5 | use cebe\markdown\GithubMarkdown; |
6 | 6 | use CodedMonkey\Dirigent\Composer\ComposerClient; |
| 7 | +use CodedMonkey\Dirigent\Composer\ConfigFactory; |
| 8 | +use CodedMonkey\Dirigent\Composer\InMemoryJsonFile; |
7 | 9 | use CodedMonkey\Dirigent\Doctrine\Entity\AbstractVersionLink; |
8 | 10 | use CodedMonkey\Dirigent\Doctrine\Entity\Package; |
9 | 11 | use CodedMonkey\Dirigent\Doctrine\Entity\PackageFetchStrategy; |
|
21 | 23 | use CodedMonkey\Dirigent\Doctrine\Repository\VersionRepository; |
22 | 24 | use CodedMonkey\Dirigent\Message\DumpPackageProvider; |
23 | 25 | use CodedMonkey\Dirigent\Message\UpdatePackageLinks; |
| 26 | +use Composer\Installer\InstallationManager; |
| 27 | +use Composer\IO\NullIO; |
24 | 28 | use Composer\Package\AliasPackage; |
25 | 29 | use Composer\Package\CompletePackageInterface; |
| 30 | +use Composer\Package\Locker; |
26 | 31 | use Composer\Pcre\Preg; |
27 | 32 | use Composer\Repository\Vcs\VcsDriverInterface; |
| 33 | +use Composer\Util\Loop; |
| 34 | +use Composer\Util\ProcessExecutor; |
28 | 35 | use Doctrine\ORM\EntityManagerInterface; |
29 | 36 | use Symfony\Component\Messenger\Envelope; |
30 | 37 | use Symfony\Component\Messenger\MessageBusInterface; |
@@ -120,6 +127,8 @@ private function resolveRegistryPackage(Package $package, ?Registry $registry = |
120 | 127 | /** @var CompletePackageInterface[] $composerPackages */ |
121 | 128 | $composerPackages = $repository->findPackages($packageName); |
122 | 129 |
|
| 130 | + dd($composerPackages); |
| 131 | + |
123 | 132 | $this->updatePackage($package, $composerPackages); |
124 | 133 | } |
125 | 134 |
|
@@ -156,6 +165,10 @@ private function resolveVcsPackage(Package $package): void |
156 | 165 | /** @var CompletePackageInterface[] $composerPackages */ |
157 | 166 | $composerPackages = $repository->findPackages($packageName); |
158 | 167 |
|
| 168 | + dump($repository); |
| 169 | + dump($composerPackages[0]); |
| 170 | + //dd($composerPackages); |
| 171 | + |
159 | 172 | $this->updatePackage($package, $composerPackages, $driver); |
160 | 173 | } |
161 | 174 |
|
@@ -213,6 +226,8 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr |
213 | 226 | $package->setRepositoryUrl($primaryVersion->getSourceUrl()); |
214 | 227 | } |
215 | 228 |
|
| 229 | + $this->updateInstalledPackages($primaryVersion, $driver); |
| 230 | + |
216 | 231 | $message = Envelope::wrap(new UpdatePackageLinks($package->getId(), $primaryVersion->getNormalizedVersion())) |
217 | 232 | ->with(new DispatchAfterCurrentBusStamp()) |
218 | 233 | ->with(new TransportNamesStamp('async')); |
@@ -431,6 +446,31 @@ private function sanitize(?string $str): ?string |
431 | 446 | return Preg::replace("{[\x01-\x1A]}u", '', $str); |
432 | 447 | } |
433 | 448 |
|
| 449 | + private function updateInstalledPackages(Version $version, VcsDriverInterface $driver): void |
| 450 | + { |
| 451 | + $source = $driver->getFileContent('composer.lock', $version->getSource()['reference']); |
| 452 | + |
| 453 | + if (empty($source)) { |
| 454 | + return; |
| 455 | + } |
| 456 | + |
| 457 | + $jsonFile = new InMemoryJsonFile($source); |
| 458 | + |
| 459 | + $config = ConfigFactory::createForVcsRepository($version->getPackage()->getRepositoryUrl(), $version->getPackage()->getRepositoryCredentials()); |
| 460 | + $io = new NullIO(); |
| 461 | + $io->loadConfiguration($config); |
| 462 | + $process = new ProcessExecutor($io); |
| 463 | + $httpDownloader = $this->composer->createHttpDownloader($io, $config); |
| 464 | + $loop = new Loop($httpDownloader, $process); |
| 465 | + |
| 466 | + |
| 467 | + $locker = new Locker($io, $jsonFile, new InstallationManager($loop, $io), $driver->getFileContent('composer.json', $version->getSource()['reference'])); |
| 468 | + |
| 469 | + dump($locker->getLockedRepository()); |
| 470 | + dump($source); |
| 471 | + dd(); |
| 472 | + } |
| 473 | + |
434 | 474 | private function updateReadme(Version $version, VcsDriverInterface $driver): void |
435 | 475 | { |
436 | 476 | try { |
|
0 commit comments