MCPcopy Create free account
hub / github.com/Melkeydev/govm / findMatchingVersion

Function findMatchingVersion

internal/cli/cli.go:112–152  ·  view source on GitHub ↗
(version string)

Source from the content-addressed store, hash-verified

110 fmt.Println("To switch versions: govm use <version>")
111}
112func findMatchingVersion(version string) (utils.GoVersion, error) {
113 msg := utils.FetchGoVersions()
114 versions, ok := msg.(utils.VersionsMsg)
115 if !ok {
116 if errMsg, isErr := msg.(utils.ErrMsg); isErr {
117 return utils.GoVersion{}, fmt.Errorf("failed to fetch versions: %v", errMsg)
118 }
119 return utils.GoVersion{}, fmt.Errorf("failed to fetch versions")
120 }
121 for _, v := range versions {
122 if v.Version == version {
123 return v, nil
124 }
125 }
126 prefix := version + "."
127 var matchedVersion utils.GoVersion
128 found := false
129 for _, v := range versions {
130 if strings.HasPrefix(v.Version, prefix) {
131 if !found || compareVersions(v.Version, matchedVersion.Version) > 0 {
132 matchedVersion = v
133 found = true
134 }
135 }
136 }
137 if !found && !strings.Contains(version, ".") {
138 prefix = version + "."
139 for _, v := range versions {
140 if strings.HasPrefix(v.Version, prefix) {
141 if !found || compareVersions(v.Version, matchedVersion.Version) > 0 {
142 matchedVersion = v
143 found = true
144 }
145 }
146 }
147 }
148 if found {
149 return matchedVersion, nil
150 }
151 return utils.GoVersion{}, fmt.Errorf("no version matching '%s' found", version)
152}
153func findInstalledVersion(version string) (utils.GoVersion, error) {
154 homeDir, err := os.UserHomeDir()
155 if err != nil {

Callers 1

InstallVersionFunction · 0.85

Calls 2

FetchGoVersionsFunction · 0.92
compareVersionsFunction · 0.85

Tested by

no test coverage detected