Skip to content

Commit a6dba07

Browse files
pick the latest in order for dev-latest (#180)
* pick right order for dev-latest
1 parent 55562ca commit a6dba07

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

helpers.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ func (gb *GoBrew) judgeVersion(version string) string {
199199
return gb.judgeVersion(modVersion)
200200
}
201201
groupedVersions := gb.ListRemoteVersions(false) // donot print
202+
203+
// latest will pick the latest version excluding rc and beta
204+
// dev-latest will first remove rc and beta from the list of versions and then pick the latest version
202205
if version == "latest" || version == "dev-latest" {
203206
groupedVersionKeys := make([]string, 0, len(groupedVersions))
204207
for groupedVersionKey := range groupedVersions {
@@ -224,7 +227,16 @@ func (gb *GoBrew) judgeVersion(version string) string {
224227
if len(judgedVersions) == 0 {
225228
return "None"
226229
}
227-
return judgedVersions[len(judgedVersions)-1]
230+
// Filter versions containing "rc" or "beta"
231+
filteredVersions := gb.filterVersions(judgedVersions, []string{"rc", "beta"})
232+
233+
// Get the last element of the filtered slice
234+
var lastVersion string
235+
if len(filteredVersions) > 0 {
236+
lastVersion = filteredVersions[len(filteredVersions)-1]
237+
}
238+
239+
return lastVersion
228240
}
229241

230242
// loop in reverse
@@ -313,6 +325,20 @@ func (gb *GoBrew) getVersionDir(version string) string {
313325
return filepath.Join(gb.versionsDir, version)
314326
}
315327

328+
// filterVersions returns a new slice containing only the elements that contain any of the substrings in contains
329+
func (gb *GoBrew) filterVersions(versions []string, contains []string) []string {
330+
var filtered []string
331+
for _, version := range versions {
332+
for _, contain := range contains {
333+
if strings.Contains(version, contain) {
334+
filtered = append(filtered, version)
335+
break // Move to the next version after the first match
336+
}
337+
}
338+
}
339+
return filtered
340+
}
341+
316342
func (gb *GoBrew) downloadAndExtract(version string) {
317343
tarName := "go" + version + "." + gb.getArch() + tarNameExt
318344

0 commit comments

Comments
 (0)