|
|
|
@ -12,6 +12,7 @@
|
|
|
|
|
|
|
|
|
|
namespace Composer\Package\Loader;
|
|
|
|
|
|
|
|
|
|
use Composer\Package\BasePackage;
|
|
|
|
|
use Composer\Package\Version\VersionParser;
|
|
|
|
|
use Composer\Repository\RepositoryManager;
|
|
|
|
|
use Composer\Util\ProcessExecutor;
|
|
|
|
@ -60,24 +61,22 @@ class RootPackageLoader extends ArrayLoader
|
|
|
|
|
|
|
|
|
|
$package = parent::load($config);
|
|
|
|
|
|
|
|
|
|
$aliases = array();
|
|
|
|
|
$stabilityFlags = array();
|
|
|
|
|
if (isset($config['require'])) {
|
|
|
|
|
$aliases = array();
|
|
|
|
|
foreach ($config['require'] as $reqName => $reqVersion) {
|
|
|
|
|
if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $reqVersion, $match)) {
|
|
|
|
|
$aliases[] = array(
|
|
|
|
|
'package' => strtolower($reqName),
|
|
|
|
|
'version' => $this->versionParser->normalize($match[1]),
|
|
|
|
|
'alias' => $match[2],
|
|
|
|
|
'alias_normalized' => $this->versionParser->normalize($match[2]),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$package->setAliases($aliases);
|
|
|
|
|
$aliases = $this->extractAliases($config['require'], $aliases);
|
|
|
|
|
$stabilityFlags = $this->extractStabilityFlags($config['require'], $stabilityFlags);
|
|
|
|
|
}
|
|
|
|
|
if (isset($config['require-dev'])) {
|
|
|
|
|
$aliases = $this->extractAliases($config['require-dev'], $aliases);
|
|
|
|
|
$stabilityFlags = $this->extractStabilityFlags($config['require-dev'], $stabilityFlags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$package->setAliases($aliases);
|
|
|
|
|
$package->setStabilityFlags($stabilityFlags);
|
|
|
|
|
|
|
|
|
|
if (isset($config['minimum-stability'])) {
|
|
|
|
|
$package->setMinimumStability($config['minimum-stability']);
|
|
|
|
|
$package->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability']));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($config['repositories'])) {
|
|
|
|
@ -99,4 +98,38 @@ class RootPackageLoader extends ArrayLoader
|
|
|
|
|
|
|
|
|
|
return $package;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function extractAliases(array $requires, array $aliases)
|
|
|
|
|
{
|
|
|
|
|
foreach ($requires as $reqName => $reqVersion) {
|
|
|
|
|
if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $reqVersion, $match)) {
|
|
|
|
|
$aliases[] = array(
|
|
|
|
|
'package' => strtolower($reqName),
|
|
|
|
|
'version' => $this->versionParser->normalize($match[1]),
|
|
|
|
|
'alias' => $match[2],
|
|
|
|
|
'alias_normalized' => $this->versionParser->normalize($match[2]),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $aliases;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function extractStabilityFlags(array $requires, array $stabilityFlags)
|
|
|
|
|
{
|
|
|
|
|
$stabilities = BasePackage::$stabilities;
|
|
|
|
|
foreach ($requires as $reqName => $reqVersion) {
|
|
|
|
|
if (preg_match('{^[^,\s]*?@('.implode('|', $stabilities).')$}i', $reqVersion, $match)) {
|
|
|
|
|
$name = strtolower($reqName);
|
|
|
|
|
$stability = array_search(VersionParser::normalizeStability($match[1]), $stabilities);
|
|
|
|
|
|
|
|
|
|
if (isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$stabilityFlags[$name] = $stability;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $stabilityFlags;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|