X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=app%2FGithub%2FAPI.php;h=3eea40d625defd7042bc1e3bb818348c5160d798;hb=98e8aa941a26ed0990814a2d87bf590e70fe3ce7;hp=c7a2b05075f18387fcc7878688aada799475642b;hpb=2198c781a021d85ee845f2f4b2f5c322f73e6bd5;p=pharext%2Fpharext.org diff --git a/app/Github/API.php b/app/Github/API.php index c7a2b05..3eea40d 100644 --- a/app/Github/API.php +++ b/app/Github/API.php @@ -184,13 +184,13 @@ class API } /** - * Check if the pharext webhook is set for the repo and return it - * @param object $repo + * Check if the pharext webhook is set and return it + * @param array $hooks * @return stdClass hook */ - function checkRepoHook($repo) { - if (!empty($repo->hooks)) { - foreach ($repo->hooks as $hook) { + function checkHook($hooks) { + if (!empty($hooks)) { + foreach ($hooks as $hook) { if ($hook->name === "web" && $hook->config->url === $this->config->hook->url) { return $hook; } @@ -199,6 +199,18 @@ class API return null; } + /** + * Check if the pharext webhook is set for the repo and return it + * @param object $repo + * @return stdClass hook + */ + function checkRepoHook($repo) { + if (!empty($repo->hooks)) { + return $this->checkHook($repo->hooks); + } + return null; + } + function listHooks($repo) { return $this->queue(new API\Hooks\ListHooks($this, compact("repo"))); } @@ -243,12 +255,16 @@ class API return $this->queue(new API\Releases\ListReleaseAssets($this, compact("repo", "id"))); } - function uploadAssetForRelease($repo, $release, $config) { + function uploadAssetForRelease($repo, $release, $config = null) { return $this->listHooks($repo->full_name)->then(function($result) use($release, $repo, $config) { list($repo->hooks) = $result; - $hook = $this->checkRepoHook($repo); - $phar = new Pharext\Package($repo->clone_url, $release->tag_name, $repo->name, $config ?: $hook->config); - $name = sprintf("%s-%s.ext.phar", $repo->name, $release->tag_name); + $phar = new Pharext\Package( + $repo->clone_url, + $release->tag_name, + $repo->name, + $config ?: (array) $this->checkRepoHook($repo)->config + ); + $name = $phar->build(); $url = uri_template($release->upload_url, compact("name")); $promise = $this->createReleaseAsset($url, $phar, "application/phar"); if ($release->draft) { @@ -260,7 +276,7 @@ class API }); } - function createReleaseFromTag($repo, $tag_name, $config) { + function createReleaseFromTag($repo, $tag_name, $config = null) { return $this->createRelease($repo->full_name, $tag_name)->then(function($result) use($repo, $config) { list($release) = $result; return $this->uploadAssetForRelease($repo, $release, $config);