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

Breadcrumb

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

function Locker::getLockedRepository

Searches and returns an array of locked packages, retrieved from registered repositories.

Parameters

bool $withDevReqs true to retrieve the locked dev packages:

Throws

\RuntimeException

1 call to Locker::getLockedRepository()
Locker::getMissingRequirementInfo in vendor/composer/composer/src/Composer/Package/Locker.php

File

vendor/composer/composer/src/Composer/Package/Locker.php, line 162

Class

Locker
Reads/writes project lockfile (composer.lock).

Namespace

Composer\Package

Code

public function getLockedRepository(bool $withDevReqs = false) : LockArrayRepository {
    $lockData = $this->getLockData();
    $packages = new LockArrayRepository();
    $lockedPackages = $lockData['packages'];
    if ($withDevReqs) {
        if (isset($lockData['packages-dev'])) {
            $lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']);
        }
        else {
            throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or delete it and run composer update to generate a new lock file.');
        }
    }
    if (empty($lockedPackages)) {
        return $packages;
    }
    if (isset($lockedPackages[0]['name'])) {
        $packageByName = [];
        foreach ($lockedPackages as $info) {
            $package = $this->loader
                ->load($info);
            $packages->addPackage($package);
            $packageByName[$package->getName()] = $package;
            if ($package instanceof AliasPackage) {
                $packageByName[$package->getAliasOf()
                    ->getName()] = $package->getAliasOf();
            }
        }
        if (isset($lockData['aliases'])) {
            foreach ($lockData['aliases'] as $alias) {
                if (isset($packageByName[$alias['package']])) {
                    $aliasPkg = new CompleteAliasPackage($packageByName[$alias['package']], $alias['alias_normalized'], $alias['alias']);
                    $aliasPkg->setRootPackageAlias(true);
                    $packages->addPackage($aliasPkg);
                }
            }
        }
        return $packages;
    }
    throw new \RuntimeException('Your composer.lock is invalid. Run "composer update" to generate a new one.');
}
RSS feed
Powered by Drupal