MCPcopy Create free account
hub / github.com/cli/cli / fetchReleaseFromTag

Function fetchReleaseFromTag

pkg/cmd/extension/http.go:157–192  ·  view source on GitHub ↗

fetchReleaseFromTag finds release by tag name for a repository

(httpClient *http.Client, baseRepo ghrepo.Interface, tagName string)

Source from the content-addressed store, hash-verified

155
156// fetchReleaseFromTag finds release by tag name for a repository
157func fetchReleaseFromTag(httpClient *http.Client, baseRepo ghrepo.Interface, tagName string) (*release, error) {
158 url, err := safeurl.JoinPathWithHostPrefix(ghinstance.RESTPrefix(baseRepo.RepoHost()), "repos", baseRepo.RepoOwner(), baseRepo.RepoName(), "releases", "tags", tagName)
159 if err != nil {
160 return nil, err
161 }
162 req, err := http.NewRequest("GET", url.String(), nil)
163 if err != nil {
164 return nil, err
165 }
166
167 resp, err := httpClient.Do(req)
168 if err != nil {
169 return nil, err
170 }
171
172 defer resp.Body.Close()
173 if resp.StatusCode == 404 {
174 return nil, releaseNotFoundErr
175 }
176 if resp.StatusCode > 299 {
177 return nil, api.HandleHTTPError(resp)
178 }
179
180 b, err := io.ReadAll(resp.Body)
181 if err != nil {
182 return nil, err
183 }
184
185 var r release
186 err = json.Unmarshal(b, &r)
187 if err != nil {
188 return nil, err
189 }
190
191 return &r, nil
192}
193
194// fetchCommitSHA finds full commit SHA from a target ref in a repo
195func fetchCommitSHA(httpClient *http.Client, baseRepo ghrepo.Interface, targetRef string) (string, error) {

Callers 1

installBinMethod · 0.85

Calls 9

JoinPathWithHostPrefixFunction · 0.92
RESTPrefixFunction · 0.92
HandleHTTPErrorFunction · 0.92
RepoHostMethod · 0.65
RepoOwnerMethod · 0.65
RepoNameMethod · 0.65
StringMethod · 0.65
DoMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected