function ComposerRepository::loadIncludes
Parameters
mixed[] $data:
Return value
mixed[]
1 call to ComposerRepository::loadIncludes()
- ComposerRepository::loadDataFromServer in vendor/
composer/ composer/ src/ Composer/ Repository/ ComposerRepository.php
File
-
vendor/
composer/ composer/ src/ Composer/ Repository/ ComposerRepository.php, line 1376
Class
- ComposerRepository
- @author Jordi Boggiano <j.boggiano@seld.be>
Namespace
Composer\RepositoryCode
private function loadIncludes(array $data) : array {
$packages = [];
// legacy repo handling
if (!isset($data['packages']) && !isset($data['includes'])) {
foreach ($data as $pkg) {
if (isset($pkg['versions']) && is_array($pkg['versions'])) {
foreach ($pkg['versions'] as $metadata) {
$packages[] = $metadata;
}
}
}
return $packages;
}
if (isset($data['packages'])) {
foreach ($data['packages'] as $package => $versions) {
$packageName = strtolower((string) $package);
foreach ($versions as $version => $metadata) {
$packages[] = $metadata;
if (!$this->displayedWarningAboutNonMatchingPackageIndex && $packageName !== strtolower((string) ($metadata['name'] ?? ''))) {
$this->displayedWarningAboutNonMatchingPackageIndex = true;
$this->io
->writeError(sprintf("<warning>Warning: the packages key '%s' doesn't match the name defined in the package metadata '%s' in repository %s</warning>", $package, $metadata['name'] ?? '', $this->baseUrl));
}
}
}
}
if (isset($data['includes'])) {
foreach ($data['includes'] as $include => $metadata) {
if (isset($metadata['sha1']) && $this->cache
->sha1((string) $include) === $metadata['sha1']) {
$includedData = json_decode($this->cache
->read((string) $include), true);
}
else {
$includedData = $this->fetchFile($include);
}
$packages = array_merge($packages, $this->loadIncludes($includedData));
}
}
return $packages;
}