@@ -29,6 +29,7 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
29
29
resolvedToolVersions := map [string ]bool {}
30
30
var finalVersions []ToolVersions
31
31
32
+ // First: Resolve using environment values
32
33
for _ , plugin := range plugins {
33
34
version , envVariableName , found := findVersionsInEnv (plugin .Name )
34
35
if found {
@@ -37,7 +38,22 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
37
38
}
38
39
}
39
40
41
+ // Iterate from the nearest to furthest directory, ending with the user's home.
40
42
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
41
57
for _ , plugin := range plugins {
42
58
if _ , isPluginResolved := resolvedToolVersions [plugin .Name ]; ! isPluginResolved {
43
59
version , found , err := findLegacyVersionsInDir (conf , plugin , iterDir )
@@ -50,18 +66,6 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
50
66
}
51
67
}
52
68
}
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
- }
65
69
}
66
70
return finalVersions , nil
67
71
}
@@ -117,21 +121,15 @@ func iterDirectories(conf config.Config, directory string) iter.Seq[string] {
117
121
}
118
122
119
123
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
-
125
124
filepath := path .Join (directory , conf .DefaultToolVersionsFilename )
126
-
127
125
if _ , err = os .Stat (filepath ); err == nil {
128
126
versions , found , err := toolversions .FindToolVersions (filepath , plugin .Name )
129
127
if found || err != nil {
130
128
return ToolVersions {Name : plugin .Name , Versions : versions , Source : conf .DefaultToolVersionsFilename , Directory : directory }, found , err
131
129
}
132
130
}
133
131
134
- return versions , found , nil
132
+ return findLegacyVersionsInDir ( conf , plugin , directory )
135
133
}
136
134
137
135
func findLegacyVersionsInDir (conf config.Config , plugin plugins.Plugin , directory string ) (versions ToolVersions , found bool , err error ) {
0 commit comments