From a3018c43eb9e8f6661b16e07d7220b062458ac44 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 9 May 2012 20:03:56 +0200 Subject: [PATCH] Infer stability flags for requirements that have an explicit version required of a lower stability --- src/Composer/Package/Loader/RootPackageLoader.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Composer/Package/Loader/RootPackageLoader.php b/src/Composer/Package/Loader/RootPackageLoader.php index f7b313bcb..c5cf446b5 100644 --- a/src/Composer/Package/Loader/RootPackageLoader.php +++ b/src/Composer/Package/Loader/RootPackageLoader.php @@ -119,6 +119,7 @@ class RootPackageLoader extends ArrayLoader { $stabilities = BasePackage::$stabilities; foreach ($requires as $reqName => $reqVersion) { + // parse explicit stability flags if (preg_match('{^[^,\s]*?@('.implode('|', $stabilities).')$}i', $reqVersion, $match)) { $name = strtolower($reqName); $stability = array_search(VersionParser::normalizeStability($match[1]), $stabilities); @@ -127,6 +128,18 @@ class RootPackageLoader extends ArrayLoader continue; } $stabilityFlags[$name] = $stability; + + continue; + } + + // infer flags for requirements that have an explicit -dev or -beta version specified for example + if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { + $name = strtolower($reqName); + $stability = array_search($stabilityName, $stabilities); + if (isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) { + continue; + } + $stabilityFlags[$name] = $stability; } }