|
@@ -70,6 +70,10 @@ class RootPackageLoader extends ArrayLoader
|
|
$realPackage = $package->getAliasOf();
|
|
$realPackage = $package->getAliasOf();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (isset($config['minimum-stability'])) {
|
|
|
|
+ $realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability']));
|
|
|
|
+ }
|
|
|
|
+
|
|
$aliases = array();
|
|
$aliases = array();
|
|
$stabilityFlags = array();
|
|
$stabilityFlags = array();
|
|
$references = array();
|
|
$references = array();
|
|
@@ -82,7 +86,7 @@ class RootPackageLoader extends ArrayLoader
|
|
$links[$link->getTarget()] = $link->getConstraint()->getPrettyString();
|
|
$links[$link->getTarget()] = $link->getConstraint()->getPrettyString();
|
|
}
|
|
}
|
|
$aliases = $this->extractAliases($links, $aliases);
|
|
$aliases = $this->extractAliases($links, $aliases);
|
|
- $stabilityFlags = $this->extractStabilityFlags($links, $stabilityFlags);
|
|
|
|
|
|
+ $stabilityFlags = $this->extractStabilityFlags($links, $stabilityFlags, $realPackage->getMinimumStability());
|
|
$references = $this->extractReferences($links, $references);
|
|
$references = $this->extractReferences($links, $references);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -91,10 +95,6 @@ class RootPackageLoader extends ArrayLoader
|
|
$realPackage->setStabilityFlags($stabilityFlags);
|
|
$realPackage->setStabilityFlags($stabilityFlags);
|
|
$realPackage->setReferences($references);
|
|
$realPackage->setReferences($references);
|
|
|
|
|
|
- if (isset($config['minimum-stability'])) {
|
|
|
|
- $realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability']));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (isset($config['prefer-stable'])) {
|
|
if (isset($config['prefer-stable'])) {
|
|
$realPackage->setPreferStable((bool) $config['prefer-stable']);
|
|
$realPackage->setPreferStable((bool) $config['prefer-stable']);
|
|
}
|
|
}
|
|
@@ -124,11 +124,12 @@ class RootPackageLoader extends ArrayLoader
|
|
return $aliases;
|
|
return $aliases;
|
|
}
|
|
}
|
|
|
|
|
|
- private function extractStabilityFlags(array $requires, array $stabilityFlags)
|
|
|
|
|
|
+ private function extractStabilityFlags(array $requires, array $stabilityFlags, $minimumStability)
|
|
{
|
|
{
|
|
$stabilities = BasePackage::$stabilities;
|
|
$stabilities = BasePackage::$stabilities;
|
|
|
|
+ $minimumStability = $stabilities[$minimumStability];
|
|
foreach ($requires as $reqName => $reqVersion) {
|
|
foreach ($requires as $reqName => $reqVersion) {
|
|
- // parse explicit stability flags
|
|
|
|
|
|
+ // parse explicit stability flags to the most unstable
|
|
if (preg_match('{^[^,\s]*?@('.implode('|', array_keys($stabilities)).')$}i', $reqVersion, $match)) {
|
|
if (preg_match('{^[^,\s]*?@('.implode('|', array_keys($stabilities)).')$}i', $reqVersion, $match)) {
|
|
$name = strtolower($reqName);
|
|
$name = strtolower($reqName);
|
|
$stability = $stabilities[VersionParser::normalizeStability($match[1])];
|
|
$stability = $stabilities[VersionParser::normalizeStability($match[1])];
|
|
@@ -141,12 +142,13 @@ class RootPackageLoader extends ArrayLoader
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- // infer flags for requirements that have an explicit -dev or -beta version specified for example
|
|
|
|
|
|
+ // infer flags for requirements that have an explicit -dev or -beta version specified but only
|
|
|
|
+ // for those that are more unstable than the minimumStability or existing flags
|
|
$reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion);
|
|
$reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion);
|
|
if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) {
|
|
if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) {
|
|
$name = strtolower($reqName);
|
|
$name = strtolower($reqName);
|
|
$stability = $stabilities[$stabilityName];
|
|
$stability = $stabilities[$stabilityName];
|
|
- if (isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) {
|
|
|
|
|
|
+ if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
$stabilityFlags[$name] = $stability;
|
|
$stabilityFlags[$name] = $stability;
|