Esempio n. 1
0
 /**
  * Creates the extension phar
  */
 private function createPackage()
 {
     try {
         $meta = array_merge(Metadata::all(), ["name" => $this->args->name, "release" => $this->args->release, "license" => $this->source->getLicense(), "type" => $this->args->zend ? "zend_extension" : "extension"]);
         $file = (new Task\PharBuild($this->source, __DIR__ . "/../pharext_installer.php", $meta))->run($this->verbosity());
     } catch (\Exception $e) {
         $this->error("%s\n", $e->getMessage());
         exit(self::EBUILD);
     }
     try {
         if ($this->args->sign) {
             $this->info("Using private key to sign phar ...\n");
             $pass = (new Task\Askpass())->run($this->verbosity());
             $sign = new Task\PharSign($file, $this->args->sign, $pass);
             $pkey = $sign->run($this->verbosity());
         }
     } catch (\Exception $e) {
         $this->error("%s\n", $e->getMessage());
         exit(self::ESIGN);
     }
     if ($this->args->gzip) {
         try {
             $gzip = (new Task\PharCompress($file, Phar::GZ))->run();
             $move = new Task\PharRename($gzip, $this->args->dest, $this->args->name . "-" . $this->args->release);
             $name = $move->run($this->verbosity());
             $this->info("Created gzipped phar %s\n", $name);
             if ($this->args->sign) {
                 $sign = new Task\PharSign($name, $this->args->sign, $pass);
                 $sign->run($this->verbosity())->exportPublicKey($name . ".pubkey");
             }
         } catch (\Exception $e) {
             $this->warn("%s\n", $e->getMessage());
         }
     }
     if ($this->args->bzip) {
         try {
             $bzip = (new Task\PharCompress($file, Phar::BZ2))->run();
             $move = new Task\PharRename($bzip, $this->args->dest, $this->args->name . "-" . $this->args->release);
             $name = $move->run($this->verbosity());
             $this->info("Created bzipped phar %s\n", $name);
             if ($this->args->sign) {
                 $sign = new Task\PharSign($name, $this->args->sign, $pass);
                 $sign->run($this->verbosity())->exportPublicKey($name . ".pubkey");
             }
         } catch (\Exception $e) {
             $this->warn("%s\n", $e->getMessage());
         }
     }
     try {
         $move = new Task\PharRename($file, $this->args->dest, $this->args->name . "-" . $this->args->release);
         $name = $move->run($this->verbosity());
         $this->info("Created executable phar %s\n", $name);
         if (isset($pkey)) {
             $pkey->exportPublicKey($name . ".pubkey");
         }
     } catch (\Exception $e) {
         $this->error("%s\n", $e->getMessage());
         exit(self::EBUILD);
     }
 }
Esempio n. 2
0
 /**
  * Replace the pharext core in an .ext.phar package
  * @param string $temp path to temp phar
  * @return boolean FALSE if the package is too old (pre-v3) to upgrade
  */
 private function replacePharext($temp)
 {
     $phar = new Phar($temp, Phar::CURRENT_AS_SELF);
     $phar->startBuffering();
     if (!($meta = $phar->getMetadata())) {
         // don't upgrade pre-v3 packages
         return false;
     }
     // replace current pharext files
     $core = (new Task\BundleGenerator())->run($this->verbosity());
     $phar->buildFromIterator($core);
     $stub = __DIR__ . "/../pharext_installer.php";
     (new Task\PharStub($phar, $stub))->run($this->verbosity());
     // check dependencies
     foreach ($phar as $info) {
         if (fnmatch("*.ext.phar*", $info->getBasename())) {
             $this->updatePackage($info, $phar);
         }
     }
     $phar->stopBuffering();
     $phar->setMetadata(["version" => Metadata::version(), "header" => Metadata::header()] + $meta);
     $this->info("Updated pharext version from '%s' to '%s'\n", isset($meta["version"]) ? $meta["version"] : "(unknown)", $phar->getMetadata()["version"]);
     return true;
 }