support for running .ext.phars without ext/phar
[pharext/pharext] / src / pharext_packager.php
index f85c2f18bdf76da25196cf77abcc141947b945c3..bdce719fbe72ae36d6ccc1655cd106a65f668dd7 100644 (file)
@@ -1,10 +1,36 @@
+#!/usr/bin/env php -dphar.readonly=0
 <?php
+
 /**
  * The packager sub-stub for bin/pharext
  */
+
+namespace pharext;
+
 spl_autoload_register(function($c) {
        return include strtr($c, "\\_", "//") . ".php";
 });
 
-$packager = new pharext\Packager();
+set_include_path('phar://' . __FILE__ .":". get_include_path());
+
+if (!extension_loaded("Phar")) {
+       fprintf(STDERR, "ERROR: Phar extension not loaded\n\n");
+       fprintf(STDERR, "\tPlease load the phar extension in your php.ini\n".
+                                       "\tor rebuild PHP with the --enable-phar flag.\n\n");
+       exit(1);
+}
+
+if (ini_get("phar.readonly")) {
+       fprintf(STDERR, "ERROR: Phar is configured read-only\n\n");
+       fprintf(STDERR, "\tPlease specify phar.readonly=0 in your php.ini\n".
+                                       "\tor run this command with php -dphar.readonly=0\n\n");
+       exit(1);
+}
+
+\Phar::interceptFileFuncs();
+\Phar::mapPhar();
+
+$packager = new Packager();
 $packager->run($argc, $argv);
+
+__HALT_COMPILER();