show package info
[pharext/replicator.pharext.org] / bin / pecl
index ef215add671c24c72e7486423bb10ff559f1c64e..10fb3bdd8850acb9d81c7bf8be9d6dabf06d957c 100755 (executable)
--- a/bin/pecl
+++ b/bin/pecl
@@ -4,6 +4,9 @@
 ini_set("display_errors", 0);
 ini_set("log_errors", 1);
 
+/* needed for the packager, so the pharstub task can find includes */
+set_include_path(__DIR__."/../vendor/m6w6/pharext/src:".get_include_path());
+
 $what = !empty($argv[1]) ? $argv[1] : "latest";
 $pids = [];
 
@@ -28,12 +31,23 @@ function wait(&$pids) {
                                fail($pkg, $ver, $skp, "signal: %d", $rc);
                        } else {
                                printf("SUCCESS: %s-%s\n", $pkg, $ver);
+                               /* create skipfile, ensuring we do not build a package with
+                                * different name in registry/package.xml again
+                                */
+                               touch($skp);
                        }
                        break;
        }
        return $pid > 0;
 };
 
+function info($pkg, $dir) {
+    $inf = file_get_contents("https://pecl.php.net/rest/p/$pkg/info.xml");
+    if ($inf) {
+        file_put_contents("$dir/info.xml", $inf);
+    }
+}
+
 function work($url, $dir) {
        is_dir($dir) || mkdir($dir, 0777, true);
        require_once __DIR__."/../vendor/autoload.php";
@@ -52,7 +66,7 @@ if (($sxe = simplexml_load_file("http://pecl.php.net/feeds/$what.rss"))) {
                $url = (string) $item->link;
                $pkg = basename(dirname($url));
                $ver = basename($url);
-               $skp = sprintf("%s/../build/%s-%s.skip", __DIR__, $pkg, $ver);
+               $skp = sprintf("%s/../skip/%s/%s", __DIR__, $pkg, $ver);
                $ext = sprintf("%s/../public/phars/%s/%s-%s.ext.phar", __DIR__, $pkg, $pkg, $ver);
                $dir = dirname($ext);
 
@@ -62,6 +76,7 @@ if (($sxe = simplexml_load_file("http://pecl.php.net/feeds/$what.rss"))) {
                                        exit;
                                case 0:
                                        work($url, $dir);
+                                       info($pgk, $dir);
                                        exit;
                                default:
                                        $pids[$pid] = compact("url", "pkg", "ver", "skp", "ext", "dir");