@@ -17,19 +17,23 @@ import (
17
17
18
18
// ToolVersions represents a tool along with versions specified for it
19
19
type ToolVersions struct {
20
+ Name string
20
21
Versions []string
21
22
Directory string
22
23
Source string
23
24
}
24
25
25
26
// AllVersions takes a set of plugins and a directory and resolves all tools to one or more
26
27
// versions. This includes tools without a corresponding plugin.
27
- func AllVersions (conf config.Config , plugins []plugins.Plugin , directory string ) (versions map [string ]ToolVersions , err error ) {
28
- resolvedToolVersions := map [string ]ToolVersions {}
28
+ func AllVersions (conf config.Config , plugins []plugins.Plugin , directory string ) (versions []ToolVersions , err error ) {
29
+ resolvedToolVersions := map [string ]bool {}
30
+ var finalVersions []ToolVersions
31
+
29
32
for _ , plugin := range plugins {
30
33
version , envVariableName , found := findVersionsInEnv (plugin .Name )
31
34
if found {
32
- resolvedToolVersions [plugin .Name ] = ToolVersions {Versions : version , Source : envVariableName }
35
+ resolvedToolVersions [plugin .Name ] = true
36
+ finalVersions = append (finalVersions , ToolVersions {Name : plugin .Name , Versions : version , Source : envVariableName })
33
37
}
34
38
}
35
39
@@ -41,7 +45,8 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
41
45
return versions , err
42
46
}
43
47
if found {
44
- resolvedToolVersions [plugin .Name ] = version
48
+ resolvedToolVersions [plugin .Name ] = true
49
+ finalVersions = append (finalVersions , version )
45
50
}
46
51
}
47
52
}
@@ -51,21 +56,22 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
51
56
if allVersions , err := toolversions .GetAllToolsAndVersions (filepath ); err == nil {
52
57
for _ , v := range allVersions {
53
58
if _ , isPluginResolved := resolvedToolVersions [v .Name ]; ! isPluginResolved {
54
- resolvedToolVersions [v .Name ] = ToolVersions {Versions : v .Versions , Source : conf .DefaultToolVersionsFilename , Directory : iterDir }
59
+ resolvedToolVersions [v .Name ] = true
60
+ finalVersions = append (finalVersions , ToolVersions {Name : v .Name , Versions : v .Versions , Source : conf .DefaultToolVersionsFilename , Directory : iterDir })
55
61
}
56
62
}
57
63
}
58
64
}
59
65
}
60
- return resolvedToolVersions , nil
66
+ return finalVersions , nil
61
67
}
62
68
63
69
// Version takes a plugin and a directory and resolves the tool to one or more
64
70
// versions. Only returns results for the provided plugin.
65
71
func Version (conf config.Config , plugin plugins.Plugin , directory string ) (versions ToolVersions , found bool , err error ) {
66
72
version , envVariableName , found := findVersionsInEnv (plugin .Name )
67
73
if found {
68
- return ToolVersions {Versions : version , Source : envVariableName }, true , nil
74
+ return ToolVersions {Name : plugin . Name , Versions : version , Source : envVariableName }, true , nil
69
75
}
70
76
71
77
for iterDir := range iterDirectories (conf , directory ) {
@@ -121,7 +127,7 @@ func findVersionsInDir(conf config.Config, plugin plugins.Plugin, directory stri
121
127
if _ , err = os .Stat (filepath ); err == nil {
122
128
versions , found , err := toolversions .FindToolVersions (filepath , plugin .Name )
123
129
if found || err != nil {
124
- return ToolVersions {Versions : versions , Source : conf .DefaultToolVersionsFilename , Directory : directory }, found , err
130
+ return ToolVersions {Name : plugin . Name , Versions : versions , Source : conf .DefaultToolVersionsFilename , Directory : directory }, found , err
125
131
}
126
132
}
127
133
@@ -174,7 +180,7 @@ func findVersionsInLegacyFile(plugin plugins.Plugin, directory string) (versions
174
180
if len (versionsSlice ) == 0 || (len (versionsSlice ) == 1 && versionsSlice [0 ] == "" ) {
175
181
return versions , false , nil
176
182
}
177
- return ToolVersions {Versions : versionsSlice , Source : filename , Directory : directory }, err == nil , err
183
+ return ToolVersions {Name : plugin . Name , Versions : versionsSlice , Source : filename , Directory : directory }, err == nil , err
178
184
}
179
185
}
180
186
0 commit comments