Releases¶
The release package provides functions for listing releases and downloading release assets.
Listing Releases¶
List All Releases¶
import "github.com/grokify/gogithub/release"
releases, err := release.ListReleases(ctx, gh, "owner", "repo", nil)
for _, r := range releases {
fmt.Printf("%s: %s\n", r.GetTagName(), r.GetName())
}
With Pagination Options¶
opts := &github.ListOptions{
PerPage: 10,
Page: 1,
}
releases, err := release.ListReleases(ctx, gh, "owner", "repo", opts)
Get Latest Release¶
latest, err := release.GetLatestRelease(ctx, gh, "owner", "repo")
fmt.Printf("Latest version: %s\n", latest.GetTagName())
fmt.Printf("Published: %s\n", latest.GetPublishedAt())
Release Assets¶
List Assets for a Release¶
// First get the release
latest, _ := release.GetLatestRelease(ctx, gh, "owner", "repo")
// List its assets
assets, err := release.ListReleaseAssets(ctx, gh, "owner", "repo", latest.GetID(), nil)
for _, asset := range assets {
fmt.Printf(" %s (%d bytes)\n", asset.GetName(), asset.GetSize())
}
Download an Asset¶
Assets can be downloaded via their browser download URL:
for _, asset := range assets {
if asset.GetName() == "myapp-linux-amd64.tar.gz" {
fmt.Printf("Download URL: %s\n", asset.GetBrowserDownloadURL())
}
}
Complete Example¶
List all releases with their assets:
package main
import (
"context"
"fmt"
"github.com/grokify/gogithub/auth"
"github.com/grokify/gogithub/release"
)
func main() {
ctx := context.Background()
gh := auth.NewGitHubClient(ctx, "your-token")
releases, err := release.ListReleases(ctx, gh, "cli", "cli", nil)
if err != nil {
panic(err)
}
for _, r := range releases {
fmt.Printf("\n%s - %s\n", r.GetTagName(), r.GetName())
fmt.Printf(" Published: %s\n", r.GetPublishedAt().Format("2006-01-02"))
if r.GetPrerelease() {
fmt.Println(" (prerelease)")
}
assets, _ := release.ListReleaseAssets(ctx, gh, "cli", "cli", r.GetID(), nil)
for _, asset := range assets {
fmt.Printf(" - %s (%d KB)\n", asset.GetName(), asset.GetSize()/1024)
}
}
}
API Reference¶
See pkg.go.dev/github.com/grokify/gogithub/release for complete API documentation.