MCPcopy
hub / github.com/kopia/kopia / getLatestReleaseNameFromGitHub

Function getLatestReleaseNameFromGitHub

cli/update_check.go:106–134  ·  view source on GitHub ↗

getLatestReleaseNameFromGitHub gets the name of the release marked 'latest' on GitHub.

(ctx context.Context)

Source from the content-addressed store, hash-verified

104
105// getLatestReleaseNameFromGitHub gets the name of the release marked 'latest' on GitHub.
106func getLatestReleaseNameFromGitHub(ctx context.Context) (string, error) {
107 ctx, cancel := context.WithTimeout(ctx, githubTimeout)
108 defer cancel()
109
110 req, err := http.NewRequestWithContext(ctx, http.MethodGet, fmt.Sprintf(latestReleaseGitHubURLFormat, repo.BuildGitHubRepo), http.NoBody)
111 if err != nil {
112 return "", errors.Wrap(err, "unable to get latest release from github")
113 }
114
115 resp, err := http.DefaultClient.Do(req)
116 if err != nil {
117 return "", errors.Wrap(err, "unable to get latest release from github")
118 }
119 defer resp.Body.Close() //nolint:errcheck
120
121 if resp.StatusCode != http.StatusOK {
122 return "", errors.Errorf("invalid status code from GitHub: %v", resp.StatusCode)
123 }
124
125 var responseObject struct {
126 Name string `json:"name"`
127 }
128
129 if err := json.NewDecoder(resp.Body).Decode(&responseObject); err != nil {
130 return "", errors.Wrap(err, "invalid GitHub API response")
131 }
132
133 return responseObject.Name, nil
134}
135
136// verifyGitHubReleaseIsComplete downloads checksum file to verify that the release is complete.
137func verifyGitHubReleaseIsComplete(ctx context.Context, releaseName string) error {

Callers 1

maybeCheckGithubMethod · 0.85

Calls 2

ErrorfMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected