MCPcopy Create free account
hub / github.com/docker/docker-agent / latestVersionFiltered

Method latestVersionFiltered

pkg/toolinstall/registry.go:318–333  ·  view source on GitHub ↗

latestVersionFiltered fetches the latest release version matching a tag prefix. Needed for multi-module repos like golang/tools where tags look like "gopls/v0.21.1".

(ctx context.Context, owner, repo, tagPrefix string)

Source from the content-addressed store, hash-verified

316// latestVersionFiltered fetches the latest release version matching a tag prefix.
317// Needed for multi-module repos like golang/tools where tags look like "gopls/v0.21.1".
318func (r *Registry) latestVersionFiltered(ctx context.Context, owner, repo, tagPrefix string) (string, error) {
319 url := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases?per_page=50", owner, repo)
320
321 var releases []githubRelease
322 if err := r.getJSON(ctx, url, &releases); err != nil {
323 return "", fmt.Errorf("fetching releases for %s/%s: %w", owner, repo, err)
324 }
325
326 for _, rel := range releases {
327 if strings.HasPrefix(rel.TagName, tagPrefix) {
328 return rel.TagName, nil
329 }
330 }
331
332 return "", fmt.Errorf("no release found for %s/%s with tag prefix %q", owner, repo, tagPrefix)
333}
334
335// doGet performs an authenticated GET request and returns the response.
336// The caller is responsible for closing the response body.

Callers 1

resolveVersionFunction · 0.80

Calls 1

getJSONMethod · 0.95

Tested by

no test coverage detected