MCPcopy Create free account
hub / github.com/github/gh-aw / getLatestRelease

Function getLatestRelease

pkg/cli/update_check.go:184–223  ·  view source on GitHub ↗

getLatestRelease queries GitHub API for the latest release of gh-aw

(includePrereleases bool)

Source from the content-addressed store, hash-verified

182
183// getLatestRelease queries GitHub API for the latest release of gh-aw
184func getLatestRelease(includePrereleases bool) (string, error) {
185 updateCheckLog.Print("Querying GitHub API for latest release...")
186
187 // Always target github.com explicitly: gh-aw is only published to github.com,
188 // and users in mixed-host environments (e.g. a GHE active auth host) must
189 // still reach the canonical registry to get the correct release metadata.
190 client, err := api.NewRESTClient(gitHubDotComRESTClientOptions())
191 if err != nil {
192 return "", fmt.Errorf("failed to create GitHub client: %w", err)
193 }
194
195 if includePrereleases {
196 var releases []Release
197 err = client.Get(fmt.Sprintf("repos/github/gh-aw/releases?per_page=%d", maxReleasesToQuery), &releases)
198 if err != nil {
199 return "", fmt.Errorf("failed to query releases: %w", err)
200 }
201
202 tag := findLatestPublishedReleaseTag(releases)
203 updateCheckLog.Printf("Latest published release (pre-releases allowed): %s", tag)
204 return tag, nil
205 }
206
207 // Query the latest stable release
208 var release Release
209 err = client.Get("repos/github/gh-aw/releases/latest", &release)
210 if err != nil {
211 return "", fmt.Errorf("failed to query latest release: %w", err)
212 }
213
214 updateCheckLog.Printf("Latest release: %s (prerelease: %v)", release.TagName, release.Prerelease)
215
216 // /releases/latest already excludes prereleases per the GitHub API contract,
217 // but guard defensively in case the response ever changes.
218 if release.Prerelease {
219 return "", nil
220 }
221
222 return release.TagName, nil
223}
224
225func gitHubDotComRESTClientOptions() api.ClientOptions {
226 return api.ClientOptions{

Callers 2

checkForUpdatesFunction · 0.85

Calls 6

PrintMethod · 0.80
ErrorfMethod · 0.45
GetMethod · 0.45
PrintfMethod · 0.45

Tested by

no test coverage detected