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\PackageCode
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.');
}