Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. FilesystemRepository.php

function FilesystemRepository::generateInstalledVersions

Parameters

array<string, string> $installPaths:

Return value

array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}

1 call to FilesystemRepository::generateInstalledVersions()
FilesystemRepository::write in vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php
Writes writable repository.

File

vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php, line 250

Class

FilesystemRepository
Filesystem repository.

Namespace

Composer\Repository

Code

private function generateInstalledVersions(InstallationManager $installationManager, array $installPaths, bool $devMode, string $repoDir) : array {
    $devPackages = array_flip($this->devPackageNames);
    $packages = $this->getPackages();
    if (null === $this->rootPackage) {
        throw new \LogicException('It should not be possible to dump packages if no root package is given');
    }
    $packages[] = $rootPackage = $this->rootPackage;
    while ($rootPackage instanceof RootAliasPackage) {
        $rootPackage = $rootPackage->getAliasOf();
        $packages[] = $rootPackage;
    }
    $versions = [
        'root' => $this->dumpRootPackage($rootPackage, $installPaths, $devMode, $repoDir, $devPackages),
        'versions' => [],
    ];
    // add real installed packages
    foreach ($packages as $package) {
        if ($package instanceof AliasPackage) {
            continue;
        }
        $versions['versions'][$package->getName()] = $this->dumpInstalledPackage($package, $installPaths, $repoDir, $devPackages);
    }
    // add provided/replaced packages
    foreach ($packages as $package) {
        $isDevPackage = isset($devPackages[$package->getName()]);
        foreach ($package->getReplaces() as $replace) {
            // exclude platform replaces as when they are really there we can not check for their presence
            if (PlatformRepository::isPlatformPackage($replace->getTarget())) {
                continue;
            }
            if (!isset($versions['versions'][$replace->getTarget()]['dev_requirement'])) {
                $versions['versions'][$replace->getTarget()]['dev_requirement'] = $isDevPackage;
            }
            elseif (!$isDevPackage) {
                $versions['versions'][$replace->getTarget()]['dev_requirement'] = false;
            }
            $replaced = $replace->getPrettyConstraint();
            if ($replaced === 'self.version') {
                $replaced = $package->getPrettyVersion();
            }
            if (!isset($versions['versions'][$replace->getTarget()]['replaced']) || !in_array($replaced, $versions['versions'][$replace->getTarget()]['replaced'], true)) {
                $versions['versions'][$replace->getTarget()]['replaced'][] = $replaced;
            }
        }
        foreach ($package->getProvides() as $provide) {
            // exclude platform provides as when they are really there we can not check for their presence
            if (PlatformRepository::isPlatformPackage($provide->getTarget())) {
                continue;
            }
            if (!isset($versions['versions'][$provide->getTarget()]['dev_requirement'])) {
                $versions['versions'][$provide->getTarget()]['dev_requirement'] = $isDevPackage;
            }
            elseif (!$isDevPackage) {
                $versions['versions'][$provide->getTarget()]['dev_requirement'] = false;
            }
            $provided = $provide->getPrettyConstraint();
            if ($provided === 'self.version') {
                $provided = $package->getPrettyVersion();
            }
            if (!isset($versions['versions'][$provide->getTarget()]['provided']) || !in_array($provided, $versions['versions'][$provide->getTarget()]['provided'], true)) {
                $versions['versions'][$provide->getTarget()]['provided'][] = $provided;
            }
        }
    }
    // add aliases
    foreach ($packages as $package) {
        if (!$package instanceof AliasPackage) {
            continue;
        }
        $versions['versions'][$package->getName()]['aliases'][] = $package->getPrettyVersion();
        if ($package instanceof RootPackageInterface) {
            $versions['root']['aliases'][] = $package->getPrettyVersion();
        }
    }
    ksort($versions['versions']);
    ksort($versions);
    return $versions;
}
RSS feed
Powered by Drupal