Browse Source

Infer stability flags for requirements that have an explicit version required of a lower stability

Jordi Boggiano 13 năm trước cách đây
mục cha
commit
a3018c43eb
1 tập tin đã thay đổi với 13 bổ sung0 xóa
  1. 13 0
      src/Composer/Package/Loader/RootPackageLoader.php

+ 13 - 0
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;
             }
         }