MCPcopy Create free account
hub / github.com/nhost/nhost / GetReleases

Method GetReleases

cli/software/sofware.go:61–103  ·  view source on GitHub ↗
(ctx context.Context, version string)

Source from the content-addressed store, hash-verified

59}
60
61func (mgr *Manager) GetReleases(ctx context.Context, version string) (Releases, error) {
62 var releases Releases
63
64 req, err := http.NewRequestWithContext(
65 ctx,
66 http.MethodGet,
67 "https://api.github.com/repos/nhost/nhost/releases?per_page=100",
68 nil,
69 )
70 if err != nil {
71 return nil, fmt.Errorf("failed to create request: %w", err)
72 }
73
74 resp, err := mgr.client.Do(req)
75 if err != nil {
76 return nil, fmt.Errorf("failed to fetch releases: %w", err)
77 }
78 defer resp.Body.Close()
79
80 if resp.StatusCode != http.StatusOK {
81 b, _ := io.ReadAll(resp.Body)
82
83 return nil, fmt.Errorf( //nolint:err113
84 "failed to fetch releases with status code (%d): %s", resp.StatusCode, string(b),
85 )
86 }
87
88 b, err := io.ReadAll(resp.Body)
89 if err != nil {
90 return nil, fmt.Errorf("failed to read response body: %w", err)
91 }
92
93 if err := json.Unmarshal(b, &releases); err != nil {
94 return nil, fmt.Errorf("failed to unmarshal releases: %w", err)
95 }
96
97 // filter pre-releases and older releases
98 r := mgr.filterReleases(releases, version)
99
100 mgr.cache = r
101
102 return r, nil
103}
104
105func (mgr *Manager) LatestRelease(ctx context.Context, version string) (Release, error) {
106 if mgr.cache == nil {

Callers 3

commandUpgradeFunction · 0.95
checkCLIVersionFunction · 0.95
LatestReleaseMethod · 0.95

Calls 4

filterReleasesMethod · 0.95
ErrorfMethod · 0.80
DoMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected