Class: PuppetLibrary::Forge::Multi

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet_library/forge/multi.rb

Instance Method Summary collapse

Constructor Details

#initializeMulti

Returns a new instance of Multi.



22
23
24
# File 'lib/puppet_library/forge/multi.rb', line 22

def initialize
    @forges = []
end

Instance Method Details

#add_forge(forge) ⇒ Object



26
27
28
# File 'lib/puppet_library/forge/multi.rb', line 26

def add_forge(forge)
    @forges << forge
end

#get_module_buffer(author, name, version) ⇒ Object

Raises:



38
39
40
41
42
43
44
45
46
47
# File 'lib/puppet_library/forge/multi.rb', line 38

def get_module_buffer(author, name, version)
    @forges.each do |forge|
        begin
            return forge.get_module_buffer(author, name, version)
        rescue ModuleNotFound
            # Try the next one
        end
    end
    raise ModuleNotFound
end

#get_module_metadata(author, name) ⇒ Object

Raises:



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/puppet_library/forge/multi.rb', line 49

def (author, name)
     = @forges.inject([]) do |, forge|
        begin
             << forge.(author, name)
        rescue ModuleNotFound
            
        end
    end
    raise ModuleNotFound if .empty?
    .deep_merge.tap do ||
        ["releases"] = ["releases"].unique_by { |release| release["version"] }
    end
end

#get_module_metadata_with_dependencies(author, name, version) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/puppet_library/forge/multi.rb', line 63

def (author, name, version)
     = []
    @forges.each do |forge|
        begin
             << forge.(author, name, version)
        rescue ModuleNotFound
            # Try the next one
        end
    end
    raise ModuleNotFound if .empty?
    .deep_merge.tap do ||
        .each do |module_name, releases|
            [module_name] = releases.unique_by { |release| release["version"] }
        end
    end
end

#search_modules(query) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/puppet_library/forge/multi.rb', line 30

def search_modules(query)
    all_results = @forges.map do |forge|
        forge.search_modules(query)
    end.flatten

    SearchResult.merge_by_full_name(all_results)
end