Merge pull request #13547 from spowelljr/updateNotifyStructure

Update notify package to support `releases-v2.json`
pull/13577/head
Medya Ghazizadeh 2022-02-07 16:35:07 -08:00 committed by GitHub
commit 8f41ad572a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 13 deletions

View File

@ -36,11 +36,11 @@ var updateCheckCmd = &cobra.Command{
exit.Error(reason.InetVersionUnavailable, "Unable to fetch latest version info", err)
}
if len(r) < 1 {
if len(r.Releases) < 1 {
exit.Message(reason.InetVersionEmpty, "Update server returned an empty list")
}
out.Ln("CurrentVersion: %s", version.GetVersion())
out.Ln("LatestVersion: %s", r[0].Name)
out.Ln("LatestVersion: %s", r.Releases[0].Name)
},
}

View File

@ -68,9 +68,14 @@ func TestBetaReleasesJSON(t *testing.T) {
}
func checkReleases(t *testing.T, rs notify.Releases) {
for _, r := range rs {
for _, r := range rs.Releases {
fmt.Printf("Checking release: %s\n", r.Name)
for platform, sha := range r.Checksums {
checksums := map[string]string{
"darwin": r.Checksums.Darwin,
"linux": r.Checksums.Linux,
"windows": r.Checksums.Windows,
}
for platform, sha := range checksums {
fmt.Printf("Checking SHA for %s.\n", platform)
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, runtime.GOARCH))
if err != nil {

View File

@ -130,14 +130,33 @@ func shouldCheckURLBetaVersion(filePath string) bool {
return shouldCheckURLVersion(filePath)
}
// Release represents a release
type Release struct {
Name string
Checksums map[string]string
type operatingSystems struct {
Darwin string `json:"darwin,omitempty"`
Linux string `json:"linux,omitempty"`
Windows string `json:"windows,omitempty"`
}
// Releases represents several release
type Releases []Release
type checksums struct {
AMD64 *operatingSystems `json:"amd64,omitempty"`
ARM *operatingSystems `json:"arm,omitempty"`
ARM64 *operatingSystems `json:"arm64,omitempty"`
PPC64LE *operatingSystems `json:"ppc64le,omitempty"`
S390X *operatingSystems `json:"s390x,omitempty"`
operatingSystems
}
type Release struct {
Checksums checksums `json:"checksums"`
Name string `json:"name"`
}
type Releases struct {
Releases []Release
}
func (r *Releases) UnmarshalJSON(p []byte) error {
return json.Unmarshal(p, &r.Releases)
}
func getJSON(url string, target *Releases) error {
client := &http.Client{}
@ -165,7 +184,7 @@ var latestVersionFromURL = func(url string) (semver.Version, error) {
if err != nil {
return semver.Version{}, err
}
return semver.Make(strings.TrimPrefix(r[0].Name, version.VersionPrefix))
return semver.Make(strings.TrimPrefix(r.Releases[0].Name, version.VersionPrefix))
}
// AllVersionsFromURL get all versions from a JSON URL
@ -175,7 +194,7 @@ func AllVersionsFromURL(url string) (Releases, error) {
if err := getJSON(url, &releases); err != nil {
return releases, errors.Wrap(err, "Error getting json from minikube version url")
}
if len(releases) == 0 {
if len(releases.Releases) == 0 {
return releases, errors.Errorf("There were no json releases at the url specified: %s", url)
}
return releases, nil

View File

@ -95,7 +95,7 @@ func TestShouldCheckURLBetaVersion(t *testing.T) {
}
type URLHandlerCorrect struct {
releases Releases
releases []Release
}
func (h *URLHandlerCorrect) ServeHTTP(w http.ResponseWriter, r *http.Request) {