X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=app%2FController%2FGithub%2FHook%2FReceive.php;h=1094fd25e45491c894d07ae3f15389a228fb3079;hb=8189a52ebb8f7663aabfdbd1a3ff931db9553495;hp=fa631e2d97f484d71b3fe5a9f57f13205d7fa5b5;hpb=063205ca833946e20a1c2235418c045895153c5c;p=pharext%2Fpharext.org diff --git a/app/Controller/Github/Hook/Receive.php b/app/Controller/Github/Hook/Receive.php index fa631e2..1094fd2 100644 --- a/app/Controller/Github/Hook/Receive.php +++ b/app/Controller/Github/Hook/Receive.php @@ -7,9 +7,6 @@ use app\Github\API; use app\Model\Accounts; use app\Web; use http\Params; -use pharext\Task; -use pharext\Metadata; -use pharext\SourceDir; class Receive implements Controller { @@ -54,7 +51,14 @@ class Receive implements Controller case "create": case "release": if (($json = json_decode($request->getBody()))) { - $this->$evt($json); + if (($queue = $this->$evt($json))) { + $queue->done(function($result) use($response) { + list($created) = $result; + $response->setResponseCode(201); + $response->setHeader("Location", $created->url); + }); + $this->github->drain(); + } } else { $response->setResponseCode(415); $response->setContentType($request->getHeader("Content-Type")); @@ -97,10 +101,10 @@ class Receive implements Controller } $this->setTokenForUser($release->repository->owner->login); - $this->github->uploadAssetForRelease($release->release, $release->repository, function($json) use($response) { - $response->setResponseCode(201); - $response->setHeader("Location", $json->url); - })->send(); + return $this->github->uploadAssetForRelease( + $release->release, + $release->repository + ); } private function create($create) { @@ -113,32 +117,9 @@ class Receive implements Controller } $this->setTokenForUser($create->repository->owner->login); - $this->github->createReleaseFromTag($create->repository, $create->ref, function($json) use($response) { - $response->setResponseCode(201); - $response->setHeader("Location", $json->url); - })->send(); + return $this->github->createReleaseFromTag( + $create->repository, + $create->ref + ); } - - private function createReleaseAsset($release, $repo) { - $hook = $this->github->checkRepoHook($repo); - $phar = new Pharext\Package($repo->clone_url, $release->tag_name, $repo->name, $hook->config); - return $phar->getFile(); - - $dir = (new Task\GitClone($repo->clone_url, $release->tag_name))->run(); - if (!empty($hook->config->pecl)) { - $src = new SoureDir\Pecl($dir); - } else { - $src = new SourceDir\Git($dir); - } - $meta = Metadata::all() + [ - "name" => $repo->name, - "release" => $release->tag_name, - "license" => $src->getLicense(), - "stub" => "pharext_installer.php", - "type" => !empty($hook->config->zend) ? "zend_extension" : "extension", - ]; - $file = (new Task\PharBuild($src, $meta))->run(); - return $file; - } - }