Merge pull request #2510 from plouj/master
Log problems fetching releases
This commit is contained in:
@@ -30,7 +30,8 @@ type Asset struct {
|
||||
|
||||
var (
|
||||
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")
|
||||
ErrUpgradeInProgress = errors.New("upgrade already in progress")
|
||||
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
|
||||
func LatestGithubReleases(releasesURL, version string) ([]Release, error) {
|
||||
func FetchLatestReleases(releasesURL, version string) []Release {
|
||||
resp, err := insecureHTTP.Get(releasesURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
l.Infoln("Couldn't fetch release information:", err)
|
||||
return nil
|
||||
}
|
||||
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
|
||||
json.NewDecoder(resp.Body).Decode(&rels)
|
||||
resp.Body.Close()
|
||||
|
||||
return rels, nil
|
||||
return rels
|
||||
}
|
||||
|
||||
type SortByRelease []Release
|
||||
@@ -78,13 +80,13 @@ func (s SortByRelease) Less(i, j int) bool {
|
||||
}
|
||||
|
||||
func LatestRelease(releasesURL, version string) (Release, error) {
|
||||
rels, _ := LatestGithubReleases(releasesURL, version)
|
||||
rels := FetchLatestReleases(releasesURL, version)
|
||||
return SelectLatestRelease(version, rels)
|
||||
}
|
||||
|
||||
func SelectLatestRelease(version string, rels []Release) (Release, error) {
|
||||
if len(rels) == 0 {
|
||||
return Release{}, ErrVersionUnknown
|
||||
return Release{}, ErrNoVersionToSelect
|
||||
}
|
||||
|
||||
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.
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user