Merge pull request #13547 from spowelljr/updateNotifyStructure
Update notify package to support `releases-v2.json`pull/13577/head
commit
8f41ad572a
|
@ -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)
|
||||
},
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue