X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=app%2FPharext%2FPackage.php;h=0f2e2f4f108280308fa0dbe1ebcd7ba55918fd0d;hb=ee69aa5f36ccc63ef92888e345cfee1a36ac6d4b;hp=bb0d92ca2cbb7aa808bbb3e7bee7e15ace0b9eb4;hpb=063205ca833946e20a1c2235418c045895153c5c;p=pharext%2Fpharext.org diff --git a/app/Pharext/Package.php b/app/Pharext/Package.php index bb0d92c..0f2e2f4 100644 --- a/app/Pharext/Package.php +++ b/app/Pharext/Package.php @@ -8,21 +8,50 @@ use pharext\Task; class Package { + private $source; private $file; + private $name; + private $release; + private $zend; function __construct($git_url, $tag_name, $pkg_name, $options) { $dir = (new Task\GitClone($git_url, $tag_name))->run(); - $src = !empty($options->pecl) + $src = !empty($options["pecl"]) ? new SourceDir\Pecl($dir) : new SourceDir\Git($dir); + + /* setup defaults */ + $this->release = $tag_name; + $this->name = $pkg_name; + $this->zend = !empty($options["zend"]); + + /* override with package info from SourceDir */ + foreach ($src->getPackageInfo() as $key => $val) { + switch ($key) { + case "name": + case "release": + case "zend": + $this->$key = $val; + break; + } + } + + $this->source = $src; + } + + function build() { $meta = Metadata::all() + [ - "name" => $pkg_name, - "release" => $tag_name, - "license" => $src->getLicense(), - "stub" => "pharext_installer.php", - "type" => !empty($options->zend) ? "zend_extension" : "extension", + "name" => $this->name, + "release" => $this->release, + "license" => $this->source->getLicense(), + "type" => $this->zend ? "zend_extension" : "extension", ]; - $this->file = (new Task\PharBuild($src, $meta))->run(); + /* needed for the packager, so the pharstub task can find includes */ + set_include_path(__DIR__."/../../vendor/m6w6/pharext/src:".get_include_path()); + $stub = __DIR__."/../../vendor/m6w6/pharext/src/pharext_installer.php"; + $this->file = (new Task\PharBuild($this->source, $stub, $meta))->run(); + + return sprintf("%s-%s.ext.phar", $this->name, $this->release); } function __toString() { @@ -32,4 +61,12 @@ class Package function getFile() { return $this->file; } + + function getName() { + return $this->name; + } + + function getRelease() { + return $this->release; + } }