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

Breadcrumb

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

function ArrayLoader::configureObject

Parameters

CompletePackage $package:

mixed[] $config package data:

Return value

RootPackage|RootAliasPackage|CompletePackage|CompleteAliasPackage

2 calls to ArrayLoader::configureObject()
ArrayLoader::load in vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php
@inheritDoc
ArrayLoader::loadPackages in vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php

File

vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php, line 142

Class

ArrayLoader
@author Konstantin Kudryashiv <ever.zet@gmail.com> @author Jordi Boggiano <j.boggiano@seld.be>

Namespace

Composer\Package\Loader

Code

private function configureObject(PackageInterface $package, array $config) : BasePackage {
    if (!$package instanceof CompletePackage) {
        throw new \LogicException('ArrayLoader expects instances of the Composer\\Package\\CompletePackage class to function correctly');
    }
    $package->setType(isset($config['type']) ? strtolower($config['type']) : 'library');
    if (isset($config['target-dir'])) {
        $package->setTargetDir($config['target-dir']);
    }
    if (isset($config['extra']) && \is_array($config['extra'])) {
        $package->setExtra($config['extra']);
    }
    if (isset($config['bin'])) {
        if (!\is_array($config['bin'])) {
            $config['bin'] = [
                $config['bin'],
            ];
        }
        foreach ($config['bin'] as $key => $bin) {
            $config['bin'][$key] = ltrim($bin, '/');
        }
        $package->setBinaries($config['bin']);
    }
    if (isset($config['installation-source'])) {
        $package->setInstallationSource($config['installation-source']);
    }
    if (isset($config['default-branch']) && $config['default-branch'] === true) {
        $package->setIsDefaultBranch(true);
    }
    if (isset($config['source'])) {
        if (!isset($config['source']['type'], $config['source']['url'], $config['source']['reference'])) {
            throw new \UnexpectedValueException(sprintf("Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", $config['name'], json_encode($config['source'])));
        }
        $package->setSourceType($config['source']['type']);
        $package->setSourceUrl($config['source']['url']);
        $package->setSourceReference(isset($config['source']['reference']) ? (string) $config['source']['reference'] : null);
        if (isset($config['source']['mirrors'])) {
            $package->setSourceMirrors($config['source']['mirrors']);
        }
    }
    if (isset($config['dist'])) {
        if (!isset($config['dist']['type'], $config['dist']['url'])) {
            throw new \UnexpectedValueException(sprintf("Package %s's dist key should be specified as " . "{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", $config['name'], json_encode($config['dist'])));
        }
        $package->setDistType($config['dist']['type']);
        $package->setDistUrl($config['dist']['url']);
        $package->setDistReference(isset($config['dist']['reference']) ? (string) $config['dist']['reference'] : null);
        $package->setDistSha1Checksum($config['dist']['shasum'] ?? null);
        if (isset($config['dist']['mirrors'])) {
            $package->setDistMirrors($config['dist']['mirrors']);
        }
    }
    if (isset($config['suggest']) && \is_array($config['suggest'])) {
        foreach ($config['suggest'] as $target => $reason) {
            if ('self.version' === trim($reason)) {
                $config['suggest'][$target] = $package->getPrettyVersion();
            }
        }
        $package->setSuggests($config['suggest']);
    }
    if (isset($config['autoload'])) {
        $package->setAutoload($config['autoload']);
    }
    if (isset($config['autoload-dev'])) {
        $package->setDevAutoload($config['autoload-dev']);
    }
    if (isset($config['include-path'])) {
        $package->setIncludePaths($config['include-path']);
    }
    if (isset($config['php-ext'])) {
        $package->setPhpExt($config['php-ext']);
    }
    if (!empty($config['time'])) {
        $time = Preg::isMatch('/^\\d++$/D', $config['time']) ? '@' . $config['time'] : $config['time'];
        try {
            $date = new \DateTime($time, new \DateTimeZone('UTC'));
            $package->setReleaseDate($date);
        } catch (\Exception $e) {
        }
    }
    if (!empty($config['notification-url'])) {
        $package->setNotificationUrl($config['notification-url']);
    }
    if ($package instanceof CompletePackageInterface) {
        if (!empty($config['archive']['name'])) {
            $package->setArchiveName($config['archive']['name']);
        }
        if (!empty($config['archive']['exclude'])) {
            $package->setArchiveExcludes($config['archive']['exclude']);
        }
        if (isset($config['scripts']) && \is_array($config['scripts'])) {
            foreach ($config['scripts'] as $event => $listeners) {
                $config['scripts'][$event] = (array) $listeners;
            }
            foreach ([
                'composer',
                'php',
                'putenv',
            ] as $reserved) {
                if (isset($config['scripts'][$reserved])) {
                    trigger_error('The `' . $reserved . '` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED);
                }
            }
            $package->setScripts($config['scripts']);
        }
        if (!empty($config['description']) && \is_string($config['description'])) {
            $package->setDescription($config['description']);
        }
        if (!empty($config['homepage']) && \is_string($config['homepage'])) {
            $package->setHomepage($config['homepage']);
        }
        if (!empty($config['keywords']) && \is_array($config['keywords'])) {
            $package->setKeywords(array_map('strval', $config['keywords']));
        }
        if (!empty($config['license'])) {
            $package->setLicense(\is_array($config['license']) ? $config['license'] : [
                $config['license'],
            ]);
        }
        if (!empty($config['authors']) && \is_array($config['authors'])) {
            $package->setAuthors($config['authors']);
        }
        if (isset($config['support']) && \is_array($config['support'])) {
            $package->setSupport($config['support']);
        }
        if (!empty($config['funding']) && \is_array($config['funding'])) {
            $package->setFunding($config['funding']);
        }
        if (isset($config['abandoned'])) {
            $package->setAbandoned($config['abandoned']);
        }
    }
    if ($this->loadOptions && isset($config['transport-options'])) {
        $package->setTransportOptions($config['transport-options']);
    }
    if ($aliasNormalized = $this->getBranchAlias($config)) {
        $prettyAlias = Preg::replace('{(\\.9{7})+}', '.x', $aliasNormalized);
        if ($package instanceof RootPackage) {
            return new RootAliasPackage($package, $aliasNormalized, $prettyAlias);
        }
        return new CompleteAliasPackage($package, $aliasNormalized, $prettyAlias);
    }
    return $package;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal