Skip to content

Commit

Permalink
Resolve tool version before legacy
Browse files Browse the repository at this point in the history
  • Loading branch information
andrecloutier committed Feb 19, 2025
1 parent 5bcb80e commit 6c1e051
Showing 1 changed file with 21 additions and 18 deletions.
39 changes: 21 additions & 18 deletions internal/resolve/resolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
resolvedToolVersions := map[string]bool{}
var finalVersions []ToolVersions

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

// Iterate from the nearest to furthest directory, ending with the user's home.
for iterDir := range iterDirectories(conf, directory) {
// Second: Resolve using the tool versions file
filepath := path.Join(iterDir, conf.DefaultToolVersionsFilename)
if _, err = os.Stat(filepath); err == nil {
if allVersions, err := toolversions.GetAllToolsAndVersions(filepath); err == nil {
for _, version := range allVersions {
if _, isPluginResolved := resolvedToolVersions[version.Name]; !isPluginResolved {
resolvedToolVersions[version.Name] = true
finalVersions = append(finalVersions, ToolVersions{Name: version.Name, Versions: version.Versions, Source: conf.DefaultToolVersionsFilename, Directory: iterDir})
}
}
}
}

// Third: Resolve using legacy settings
for _, plugin := range plugins {
if _, isPluginResolved := resolvedToolVersions[plugin.Name]; !isPluginResolved {
version, found, err := findLegacyVersionsInDir(conf, plugin, iterDir)
Expand All @@ -50,18 +66,6 @@ func AllVersions(conf config.Config, plugins []plugins.Plugin, directory string)
}
}
}

filepath := path.Join(iterDir, conf.DefaultToolVersionsFilename)
if _, err = os.Stat(filepath); err == nil {
if allVersions, err := toolversions.GetAllToolsAndVersions(filepath); err == nil {
for _, v := range allVersions {
if _, isPluginResolved := resolvedToolVersions[v.Name]; !isPluginResolved {
resolvedToolVersions[v.Name] = true
finalVersions = append(finalVersions, ToolVersions{Name: v.Name, Versions: v.Versions, Source: conf.DefaultToolVersionsFilename, Directory: iterDir})
}
}
}
}
}
return finalVersions, nil
}
Expand Down Expand Up @@ -117,20 +121,19 @@ func iterDirectories(conf config.Config, directory string) iter.Seq[string] {
}

func findVersionsInDir(conf config.Config, plugin plugins.Plugin, directory string) (versions ToolVersions, found bool, err error) {
versions, found, err = findLegacyVersionsInDir(conf, plugin, directory)
if found || err != nil {
return versions, found, err
}

filepath := path.Join(directory, conf.DefaultToolVersionsFilename)

if _, err = os.Stat(filepath); err == nil {
versions, found, err := toolversions.FindToolVersions(filepath, plugin.Name)
if found || err != nil {
return ToolVersions{Name: plugin.Name, Versions: versions, Source: conf.DefaultToolVersionsFilename, Directory: directory}, found, err
}
}

versions, found, err = findLegacyVersionsInDir(conf, plugin, directory)
if found || err != nil {
return versions, found, err
}

return versions, found, nil
}

Expand Down

0 comments on commit 6c1e051

Please sign in to comment.