Merge pull request #2510 from plouj/master

Log problems fetching releases
This commit is contained in:
Jakob Borg
2015-11-24 20:39:29 +01:00
2 changed files with 13 additions and 10 deletions

View File

@@ -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)

View File

@@ -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.