handle opcache as zend_extension
[m6w6/pecl-ci] / php-version.php
old mode 100644 (file)
new mode 100755 (executable)
index 8d6e087..d7b15f3
@@ -1,12 +1,65 @@
-<?php 
+#!/usr/bin/env php
+<?php
 
 $version = $argv[1];
-$versions = json_decode(stream_get_contents(STDIN), 1);
+$versions = @json_decode(stream_get_contents(STDIN), 1);
 
-list($major) = explode(".", $version, 2);
+# check if we've got a distinct version
+if (isset($versions[$version])) {
+       printf("%s\n", $version);
+       exit;
+}
 
-if (isset($versions[$major][$version])) {
-       printf("%s\n", $versions[$major][$version]["version"]);
+$by_minor = array();
+# build the tree of latest versions per minor
+if (!empty($versions) && !isset($versions["error"])) {
+       foreach (array_keys((array) $versions) as $release) {
+               list($major, $minor, $patch) = explode(".", $release);
+               if (isset($by_minor["$major.$minor"])) {
+                       if (version_compare($release, $by_minor["$major.$minor"], "<")) {
+                               continue;
+                       }
+               }
+               $by_minor["$major.$minor"] = $release;
+       }
+}
+# check latest release
+if (isset($by_minor[$version])) {
+       printf("%s\n", $by_minor[$version]);
 } else {
-       printf("%s\n", $version);
+       # failsafe
+       switch ($version) {
+       case "5.4":
+               print("5.4.45\n");
+               break;
+       case "5.5":
+               print("5.5.37\n");
+               break;
+       case "5.6":
+               print("5.6.33\n");
+               break;
+       case "7.0":
+               print("7.0.33\n");
+               break;
+       case "7.1":
+               print("7.1.27\n");
+               break;
+       case "7.2":
+               print("7.2.34\n");
+               break;
+       case "7.3":
+               print("7.3.25\n");
+               break;
+       case "7.4":
+               print("7.4.13\n");
+               break;
+       case "8.0":
+               print("8.0.0\n");
+               break;
+       case "master":
+               print("master\n");
+               break;
+       default:
+               printf("%s\n", $version);
+       }
 }