in repositories/gcs.go [133:157]
func (gcs *GCSRepo) removeCandidates(history []string, lastN int) ([]string, error) {
var resolvedLimit int
if lastN < 1 {
resolvedLimit = len(history)
} else {
resolvedLimit = lastN
}
descendingReleases := make([]string, 0)
for hpos := len(history) - 1; hpos >= 0 && len(descendingReleases) < resolvedLimit; hpos-- {
latestVersion := history[hpos]
_, isRelease, err := listDirectoriesInReleaseBucket(latestVersion + "/release/")
if err != nil {
return []string{}, fmt.Errorf("could not list available releases for %v: %v", latestVersion, err)
}
if isRelease {
descendingReleases = append(descendingReleases, latestVersion)
}
}
if lastN > 0 && len(descendingReleases) < lastN {
return []string{}, fmt.Errorf("requested %d latest releases, but only found %d", lastN, len(descendingReleases))
}
return reverseInPlace(descendingReleases), nil
}