Class: PuppetLibrary::Forge::Abstract
- Inherits:
-
Forge
- Object
- Forge
- PuppetLibrary::Forge::Abstract
show all
- Defined in:
- lib/puppet_library/forge/abstract.rb
Overview
An abstract forge implementation that makes it easier to create new forge types.
See PuppetLibrary::Forge::Directory for an example
Instance Method Summary
collapse
Methods inherited from Forge
#clear_cache, #prime
#debug, #info, #logger, #logs, #warn
Constructor Details
#initialize(module_repo) ⇒ Abstract
Returns a new instance of Abstract.
30
31
32
|
# File 'lib/puppet_library/forge/abstract.rb', line 30
def initialize(module_repo)
@repo = module_repo
end
|
Instance Method Details
#collect_dependencies_versions(module_full_name, metadata = {}) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/puppet_library/forge/abstract.rb', line 78
def collect_dependencies_versions(module_full_name, metadata = {})
author, module_name = module_full_name.split "/"
module_versions = retrieve_metadata(author, module_name)
metadata[module_full_name] = module_versions.map {|v| v.to_version }
dependencies = module_versions.map {|v| v.dependency_names }.flatten
dependencies.each do |dependency|
collect_dependencies_versions(dependency, metadata) unless metadata.include? dependency
end
return metadata
end
|
#get_module_buffer(author, name, version) ⇒ Object
90
91
92
|
# File 'lib/puppet_library/forge/abstract.rb', line 90
def get_module_buffer(author, name, version)
@repo.get_module(author, name, version) or raise ModuleNotFound
end
|
48
49
50
51
52
53
54
55
56
|
# File 'lib/puppet_library/forge/abstract.rb', line 48
def get_module_metadata(author, name)
modules = retrieve_metadata(author, name)
raise ModuleNotFound if modules.empty?
modules = modules.version_sort_by { |m| m.version }
module_infos = modules.map { |m| m.to_info }
module_infos.deep_merge
end
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/puppet_library/forge/abstract.rb', line 58
def get_module_metadata_with_dependencies(author, name, version)
raise ModuleNotFound if retrieve_metadata(author, name).empty?
full_name = "#{author}/#{name}"
versions = collect_dependencies_versions(full_name)
return versions if version.nil?
versions[full_name] = versions[full_name].select do |v|
PuppetLibrary::Util::Dependency.new(name, version).match?(name, v["version"])
end
dependencies = versions[full_name].map do |v|
v["dependencies"].map {|(name, spec)| name}
end.flatten
versions = Hash[versions.select do |name, info|
name == full_name || dependencies.include?(name)
end]
return versions
end
|
98
99
100
|
# File 'lib/puppet_library/forge/abstract.rb', line 98
def retrieve_all_metadata
@repo.get_all_metadata.map {|metadata| ModuleMetadata.new(metadata)}
end
|
94
95
96
|
# File 'lib/puppet_library/forge/abstract.rb', line 94
def retrieve_metadata(author, module_name)
@repo.get_metadata(author, module_name).map {|metadata| ModuleMetadata.new(metadata)}
end
|
#search_modules(query) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/puppet_library/forge/abstract.rb', line 34
def search_modules(query)
search = Search.new(query)
search_results = retrieve_all_metadata.select do |result|
search.matches? result
end.sort_by do |result|
result.version
end.reverse.map do |result|
result.to_search_result
end
SearchResult.merge_by_full_name(search_results)
end
|