Class: PuppetLibrary::Forge::Abstract

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

Direct Known Subclasses

Directory, Source

Instance Method Summary collapse

Constructor Details

#initialize(module_repo) ⇒ Abstract

Returns a new instance of Abstract.



24
25
26
# File 'lib/puppet_library/forge/abstract.rb', line 24

def initialize(module_repo)
    @repo = module_repo
end

Instance Method Details

#collect_dependencies_versions(module_full_name, metadata = {}) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/puppet_library/forge/abstract.rb', line 72

def collect_dependencies_versions(module_full_name,  = {})
    author, module_name = module_full_name.split "/"
    module_versions = (author, module_name)
    [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, ) unless .include? dependency
    end
    return 
end

#get_module_buffer(author, name, version) ⇒ Object



84
85
86
# File 'lib/puppet_library/forge/abstract.rb', line 84

def get_module_buffer(author, name, version)
    @repo.get_module(author, name, version) or raise ModuleNotFound
end

#get_module_metadata(author, name) ⇒ Object

Raises:



42
43
44
45
46
47
48
49
50
# File 'lib/puppet_library/forge/abstract.rb', line 42

def (author, name)
    modules = (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

#get_module_metadata_with_dependencies(author, name, version) ⇒ Object

Raises:



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/puppet_library/forge/abstract.rb', line 52

def (author, name, version)
    raise ModuleNotFound if (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|
        Gem::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

#retrieve_all_metadataObject



92
93
94
# File 'lib/puppet_library/forge/abstract.rb', line 92

def 
    @repo..map {|| .new()}
end

#retrieve_metadata(author, module_name) ⇒ Object



88
89
90
# File 'lib/puppet_library/forge/abstract.rb', line 88

def (author, module_name)
    @repo.(author, module_name).map {|| .new()}
end

#search_modules(query) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/puppet_library/forge/abstract.rb', line 28

def search_modules(query)
    search = Search.new(query)

    search_results = .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