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)
|
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")
|
exit.Message(reason.InetVersionEmpty, "Update server returned an empty list")
|
||||||
}
|
}
|
||||||
|
|
||||||
out.Ln("CurrentVersion: %s", version.GetVersion())
|
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) {
|
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)
|
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)
|
fmt.Printf("Checking SHA for %s.\n", platform)
|
||||||
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, runtime.GOARCH))
|
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, runtime.GOARCH))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -130,14 +130,33 @@ func shouldCheckURLBetaVersion(filePath string) bool {
|
||||||
return shouldCheckURLVersion(filePath)
|
return shouldCheckURLVersion(filePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release represents a release
|
type operatingSystems struct {
|
||||||
type Release struct {
|
Darwin string `json:"darwin,omitempty"`
|
||||||
Name string
|
Linux string `json:"linux,omitempty"`
|
||||||
Checksums map[string]string
|
Windows string `json:"windows,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Releases represents several release
|
type checksums struct {
|
||||||
type Releases []Release
|
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 {
|
func getJSON(url string, target *Releases) error {
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
|
@ -165,7 +184,7 @@ var latestVersionFromURL = func(url string) (semver.Version, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return semver.Version{}, err
|
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
|
// 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 {
|
if err := getJSON(url, &releases); err != nil {
|
||||||
return releases, errors.Wrap(err, "Error getting json from minikube version url")
|
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, errors.Errorf("There were no json releases at the url specified: %s", url)
|
||||||
}
|
}
|
||||||
return releases, nil
|
return releases, nil
|
||||||
|
|
|
@ -95,7 +95,7 @@ func TestShouldCheckURLBetaVersion(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type URLHandlerCorrect struct {
|
type URLHandlerCorrect struct {
|
||||||
releases Releases
|
releases []Release
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *URLHandlerCorrect) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (h *URLHandlerCorrect) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
Loading…
Reference in New Issue