MCPcopy
hub / github.com/cli/cli / fetchReleaseFromTag

Function fetchReleaseFromTag

pkg/cmd/extension/http.go:151–185  ·  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

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

Callers 1

installBinMethod · 0.85

Calls 7

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

Tested by

no test coverage detected