Merge pull request #2510 from plouj/master
Log problems fetching releases
This commit is contained in:
@@ -30,7 +30,8 @@ type Asset struct {
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
ErrVersionUpToDate = errors.New("current version is up to date")
|
ErrVersionUpToDate = errors.New("current version is up to date")
|
||||||
ErrVersionUnknown = errors.New("couldn't fetch release information")
|
ErrNoReleaseDownload = errors.New("couldn't find a release to download")
|
||||||
|
ErrNoVersionToSelect = errors.New("no version to select")
|
||||||
ErrUpgradeUnsupported = errors.New("upgrade unsupported")
|
ErrUpgradeUnsupported = errors.New("upgrade unsupported")
|
||||||
ErrUpgradeInProgress = errors.New("upgrade already in progress")
|
ErrUpgradeInProgress = errors.New("upgrade already in progress")
|
||||||
upgradeUnlocked = make(chan bool, 1)
|
upgradeUnlocked = make(chan bool, 1)
|
||||||
|
|||||||
@@ -47,22 +47,24 @@ var insecureHTTP = &http.Client{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// LatestGithubReleases returns the latest releases, including prereleases or
|
// FetchLatestReleases returns the latest releases, including prereleases or
|
||||||
// not depending on the argument
|
// not depending on the argument
|
||||||
func LatestGithubReleases(releasesURL, version string) ([]Release, error) {
|
func FetchLatestReleases(releasesURL, version string) []Release {
|
||||||
resp, err := insecureHTTP.Get(releasesURL)
|
resp, err := insecureHTTP.Get(releasesURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
l.Infoln("Couldn't fetch release information:", err)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
if resp.StatusCode > 299 {
|
if resp.StatusCode > 299 {
|
||||||
return nil, fmt.Errorf("API call returned HTTP error: %s", resp.Status)
|
l.Infoln("API call returned HTTP error: %s", resp.Status)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var rels []Release
|
var rels []Release
|
||||||
json.NewDecoder(resp.Body).Decode(&rels)
|
json.NewDecoder(resp.Body).Decode(&rels)
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
|
|
||||||
return rels, nil
|
return rels
|
||||||
}
|
}
|
||||||
|
|
||||||
type SortByRelease []Release
|
type SortByRelease []Release
|
||||||
@@ -78,13 +80,13 @@ func (s SortByRelease) Less(i, j int) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func LatestRelease(releasesURL, version string) (Release, error) {
|
func LatestRelease(releasesURL, version string) (Release, error) {
|
||||||
rels, _ := LatestGithubReleases(releasesURL, version)
|
rels := FetchLatestReleases(releasesURL, version)
|
||||||
return SelectLatestRelease(version, rels)
|
return SelectLatestRelease(version, rels)
|
||||||
}
|
}
|
||||||
|
|
||||||
func SelectLatestRelease(version string, rels []Release) (Release, error) {
|
func SelectLatestRelease(version string, rels []Release) (Release, error) {
|
||||||
if len(rels) == 0 {
|
if len(rels) == 0 {
|
||||||
return Release{}, ErrVersionUnknown
|
return Release{}, ErrNoVersionToSelect
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Sort(SortByRelease(rels))
|
sort.Sort(SortByRelease(rels))
|
||||||
@@ -106,7 +108,7 @@ func SelectLatestRelease(version string, rels []Release) (Release, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Release{}, ErrVersionUnknown
|
return Release{}, ErrNoReleaseDownload
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to the given release, saving the previous binary with a ".old" extension.
|
// Upgrade to the given release, saving the previous binary with a ".old" extension.
|
||||||
@@ -122,7 +124,7 @@ func upgradeTo(binary string, rel Release) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ErrVersionUnknown
|
return ErrNoReleaseDownload
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upgrade to the given release, saving the previous binary with a ".old" extension.
|
// Upgrade to the given release, saving the previous binary with a ".old" extension.
|
||||||
|
|||||||
Reference in New Issue
Block a user