@@ -17,19 +17,23 @@ import (
1717
1818// ToolVersions represents a tool along with versions specified for it
1919type ToolVersions struct {
20+ Name string
2021 Versions []string
2122 Directory string
2223 Source string
2324}
2425
2526// AllVersions takes a set of plugins and a directory and resolves all tools to one or more
2627// 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+
2932 for _ , plugin := range plugins {
3033 version , envVariableName , found := findVersionsInEnv (plugin .Name )
3134 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 })
3337 }
3438 }
3539
@@ -41,7 +45,8 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
4145 return versions , err
4246 }
4347 if found {
44- resolvedToolVersions [plugin .Name ] = version
48+ resolvedToolVersions [plugin .Name ] = true
49+ finalVersions = append (finalVersions , version )
4550 }
4651 }
4752 }
@@ -51,21 +56,22 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
5156 if allVersions , err := toolversions .GetAllToolsAndVersions (filepath ); err == nil {
5257 for _ , v := range allVersions {
5358 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 })
5561 }
5662 }
5763 }
5864 }
5965 }
60- return resolvedToolVersions , nil
66+ return finalVersions , nil
6167}
6268
6369// Version takes a plugin and a directory and resolves the tool to one or more
6470// versions. Only returns results for the provided plugin.
6571func Version (conf config.Config , plugin plugins.Plugin , directory string ) (versions ToolVersions , found bool , err error ) {
6672 version , envVariableName , found := findVersionsInEnv (plugin .Name )
6773 if found {
68- return ToolVersions {Versions : version , Source : envVariableName }, true , nil
74+ return ToolVersions {Name : plugin . Name , Versions : version , Source : envVariableName }, true , nil
6975 }
7076
7177 for iterDir := range iterDirectories (conf , directory ) {
@@ -121,7 +127,7 @@ func findVersionsInDir(conf config.Config, plugin plugins.Plugin, directory stri
121127 if _ , err = os .Stat (filepath ); err == nil {
122128 versions , found , err := toolversions .FindToolVersions (filepath , plugin .Name )
123129 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
125131 }
126132 }
127133
@@ -174,7 +180,7 @@ func findVersionsInLegacyFile(plugin plugins.Plugin, directory string) (versions
174180 if len (versionsSlice ) == 0 || (len (versionsSlice ) == 1 && versionsSlice [0 ] == "" ) {
175181 return versions , false , nil
176182 }
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
178184 }
179185 }
180186
0 commit comments