class AsdfDiscover::SearchResult

Amalgamated results from Searchers. Contains the data required to display warnings and write the .tool-versions file.

Constants

Conflict

Public Class Methods

new(results) click to toggle source
# File lib/asdf_discover/search_result.rb, line 7
def initialize(results)
  @results = results
end

Public Instance Methods

any?() click to toggle source
# File lib/asdf_discover/search_result.rb, line 23
def any?
  @results.any?
end
conflicts() click to toggle source
# File lib/asdf_discover/search_result.rb, line 15
def conflicts
  @conflicts ||= find_conflicts
end
consistent?() click to toggle source
# File lib/asdf_discover/search_result.rb, line 11
def consistent?
  conflicts.none?
end
tool_versions() click to toggle source
# File lib/asdf_discover/search_result.rb, line 19
def tool_versions
  @tool_versions ||= collect_tool_versions
end

Private Instance Methods

collect_tool_versions() click to toggle source
# File lib/asdf_discover/search_result.rb, line 36
def collect_tool_versions
  @results
    .sort_by { |e| [e.tool, e.version] }
    .uniq { |e| [e.tool, e.version] }
end
find_conflicts() click to toggle source
# File lib/asdf_discover/search_result.rb, line 29
def find_conflicts
  @results
    .group_by(&:tool)
    .filter { |_tool, matches| matches.map(&:version).uniq.length != 1 }
    .map { |tool, matches| Conflict.new(tool, matches) }
end