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

Breadcrumb

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

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\Repository

Code

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;
}
RSS feed
Powered by Drupal