Skip to content

Commit 1f7649c

Browse files
committed
Resolve tool version before legacy
1 parent 5bcb80e commit 1f7649c

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

internal/resolve/resolve.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
2929
resolvedToolVersions := map[string]bool{}
3030
var finalVersions []ToolVersions
3131

32+
// First: Resolve using environment values
3233
for _, plugin := range plugins {
3334
version, envVariableName, found := findVersionsInEnv(plugin.Name)
3435
if found {
@@ -37,7 +38,22 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
3738
}
3839
}
3940

41+
// Iterate from the nearest to furthest directory, ending with the user's home.
4042
for iterDir := range iterDirectories(conf, directory) {
43+
// Second: Resolve using the tool versions file
44+
filepath := path.Join(iterDir, conf.DefaultToolVersionsFilename)
45+
if _, err = os.Stat(filepath); err == nil {
46+
if allVersions, err := toolversions.GetAllToolsAndVersions(filepath); err == nil {
47+
for _, version := range allVersions {
48+
if _, isPluginResolved := resolvedToolVersions[version.Name]; !isPluginResolved {
49+
resolvedToolVersions[version.Name] = true
50+
finalVersions = append(finalVersions, ToolVersions{Name: version.Name, Versions: version.Versions, Source: conf.DefaultToolVersionsFilename, Directory: iterDir})
51+
}
52+
}
53+
}
54+
}
55+
56+
// Third: Resolve using legacy settings
4157
for _, plugin := range plugins {
4258
if _, isPluginResolved := resolvedToolVersions[plugin.Name]; !isPluginResolved {
4359
version, found, err := findLegacyVersionsInDir(conf, plugin, iterDir)
@@ -50,18 +66,6 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
5066
}
5167
}
5268
}
53-
54-
filepath := path.Join(iterDir, conf.DefaultToolVersionsFilename)
55-
if _, err = os.Stat(filepath); err == nil {
56-
if allVersions, err := toolversions.GetAllToolsAndVersions(filepath); err == nil {
57-
for _, v := range allVersions {
58-
if _, isPluginResolved := resolvedToolVersions[v.Name]; !isPluginResolved {
59-
resolvedToolVersions[v.Name] = true
60-
finalVersions = append(finalVersions, ToolVersions{Name: v.Name, Versions: v.Versions, Source: conf.DefaultToolVersionsFilename, Directory: iterDir})
61-
}
62-
}
63-
}
64-
}
6569
}
6670
return finalVersions, nil
6771
}
@@ -117,21 +121,15 @@ func iterDirectories(conf config.Config, directory string) iter.Seq[string] {
117121
}
118122

119123
func findVersionsInDir(conf config.Config, plugin plugins.Plugin, directory string) (versions ToolVersions, found bool, err error) {
120-
versions, found, err = findLegacyVersionsInDir(conf, plugin, directory)
121-
if found || err != nil {
122-
return versions, found, err
123-
}
124-
125124
filepath := path.Join(directory, conf.DefaultToolVersionsFilename)
126-
127125
if _, err = os.Stat(filepath); err == nil {
128126
versions, found, err := toolversions.FindToolVersions(filepath, plugin.Name)
129127
if found || err != nil {
130128
return ToolVersions{Name: plugin.Name, Versions: versions, Source: conf.DefaultToolVersionsFilename, Directory: directory}, found, err
131129
}
132130
}
133131

134-
return versions, found, nil
132+
return findLegacyVersionsInDir(conf, plugin, directory)
135133
}
136134

137135
func findLegacyVersionsInDir(conf config.Config, plugin plugins.Plugin, directory string) (versions ToolVersions, found bool, err error) {

0 commit comments

Comments
 (0)