Module: PuppetLibrary::Forge::SearchResult

Defined in:
lib/puppet_library/forge/search_result.rb

Class Method Summary collapse

Class Method Details

.combine_search_results(search_results) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/puppet_library/forge/search_result.rb', line 32

def self.combine_search_results(search_results)
    highest_version, tags, releases = search_results.inject([nil, [], []]) do |(highest_version, tags, releases), result|
        [
            max_version(highest_version, result["version"]),
            tags + (result["tag_list"] || []),
            releases + (result["releases"] || [])
        ]
    end

    combined_result = search_results.first.tap do |result|
        result["version"] = highest_version
        result["tag_list"] = tags.uniq
        result["releases"] = releases.uniq.version_sort_by {|r| r["version"]}.reverse
    end
end

.max_version(left, right) ⇒ Object



48
49
50
# File 'lib/puppet_library/forge/search_result.rb', line 48

def self.max_version(left, right)
    [Gem::Version.new(left), Gem::Version.new(right)].max.version
end

.merge_by_full_name(results) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/puppet_library/forge/search_result.rb', line 22

def self.merge_by_full_name(results)
    results_by_module = results.group_by do |result|
        result["full_name"]
    end

    results_by_module.values.map do |module_results|
        combine_search_results(module_results)
    end.flatten
end