-
- function repoCallback($repo) {
- $this->app->getView()->addData(compact("repo") + [
- "title" => "Github: {$repo->name}"
- ]);
- settype($repo->tags, "object");
- $this->github->listHooks($repo->full_name, function($hooks) use($repo) {
- $repo->hooks = $hooks;
- });
- $this->github->listTags($repo->full_name, 1, $this->createTagsCallback($repo));
- $this->github->listReleases($repo->full_name, 1, $this->createReleasesCallback($repo));
- $this->github->readContents($repo->full_name, null, $this->createContentsCallback($repo));
- }
-
- function createReleasesCallback($repo) {
- return function($releases, $links) use($repo) {
- foreach ($releases as $release) {
- $tag = $release->tag_name;
- settype($repo->tags->$tag, "object");
- $repo->tags->$tag->release = $release;
- $this->github->listReleaseAssets($repo->full_name, $release->id, function($assets) use($release) {
- $release->assets = $assets;
- });
- }
- };
- }
-
- function createTagsCallback($repo) {
- return function($tags, $links) use ($repo) {
- foreach ($tags as $tag) {
- $name = $tag->name;
- settype($repo->tags->$name, "object");
- $repo->tags->$name->tag = $tag;
- }
- };
- }
-
- function createContentsCallback($repo) {
- return function($tree) use($repo) {
- foreach ($tree as $entry) {
- if ($entry->type !== "file" || $entry->size <= 0) {
- continue;
- }
- if ($entry->name === "config.m4" || fnmatch("config?.m4", $entry->name)) {
- $repo->config_m4 = $entry->name;
- } elseif ($entry->name === "package.xml" || $entry->name === "package2.xml") {
- $repo->package_xml = $entry->name;
- } elseif ($entry->name === "pharext_package.php") {
- $repo->pharext_package_php = $entry->name;
- }
- }
- };
- }