use app\Controller\Github;
use app\Github\API\Repos\RepoCallback;
-
class Release extends Github
{
function __invoke(array $args = null) {
extract($args);
if ($this->checkToken()) {
- list($repo) = $this->github->readRepo("$owner/$name", function($repo, $links = null) {
- call_user_func(new RepoCallback($this->github), $repo, $links);
-
- $this->github->listReleases($repo->full_name, null, function($releases) use($repo) {
- $config = $this->app->getRequest()->getForm();
- foreach ($releases as $r) {
- if ($r->tag_name === $config->tag) {
- $this->github->uploadAssetForRelease($repo, $r, $config, function() use($repo) {
- $this->app->redirect($this->app->getBaseUrl()->mod("./github/" . $repo->full_name));
- });
- return;
- }
+ $this->github->readRepo("$owner/$name")->then(
+ new RepoCallback($this->github)
+ )->then(function($result) use(&$repo) {
+ list($repo,,,$releases) = $result;
+ $config = $this->app->getRequest()->getForm();
+
+ foreach ($releases as $release) {
+ if ($release->tag_name === $config["tag"]) {
+ return $this->github->uploadAssetForRelease($repo, $release, $config);
}
-
- $this->github->createReleaseFromTag($repo, $tag, $config, function() use($repo) {
- $this->app->redirect($this->app->getBaseUrl()->mod("./github/" . $repo->full_name));
- });
- });
- })->send();
+ }
+
+ return $this->github->createReleaseFromTag($repo, $config["tag"], $config);
+ })->done(function() use(&$repo) {
+ $this->app->redirect($this->app->getBaseUrl()->mod("./github/repo/" . $repo->full_name));
+ });
+ $this->github->drain();
$hook = $this->github->checkRepoHook($repo);
-
$this->app->getView()->addData(compact("owner", "name", "repo", "hook"));
if (($modal = $this->app->getRequest()->getQuery("modal"))) {