From 6476d845efb20f91d03fe255448227848968b219 Mon Sep 17 00:00:00 2001 From: Mikhail Elhimov Date: Tue, 21 Jan 2025 01:05:46 +0300 Subject: [PATCH] uninstall: simplify `GetAvailableVersions` --- cli/uninstall/uninstall.go | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/cli/uninstall/uninstall.go b/cli/uninstall/uninstall.go index b6ca33905..f3245d439 100644 --- a/cli/uninstall/uninstall.go +++ b/cli/uninstall/uninstall.go @@ -18,12 +18,6 @@ import ( ) const ( - progRegexp = "(?P" + - search.ProgramTt + "|" + - search.ProgramCe + "|" + - search.ProgramEe + ")" - verRegexp = "(?P.*)" - MajorMinorPatchRegexp = `^[0-9]+\.[0-9]+\.[0-9]+` ) @@ -185,28 +179,23 @@ func getDefault(program, dir string) (string, error) { // GetAvailableVersions returns a list of the program's versions installed into // the 'dir' directory. func GetAvailableVersions(program string, dir string) []string { - list := []string{} - re := regexp.MustCompile( - "^" + progRegexp + version.FsSeparator + verRegexp + "$", - ) - if dir == "" { return nil } - installedPrograms, err := os.ReadDir(dir) + versionPrefix := filepath.Join(dir, program+version.FsSeparator) + + programFiles, err := filepath.Glob(versionPrefix + "*") if err != nil { return nil } - for _, file := range installedPrograms { - matches := util.FindNamedMatches(re, file.Name()) - if len(matches) != 0 && matches["prog"] == program { - list = append(list, matches["ver"]) - } + versions := []string{} + for _, file := range programFiles { + versions = append(versions, file[len(versionPrefix):]) } - return list + return versions } // searchLatestVersion searches for the latest installed version of the program.