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\LoaderCode
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;
}