Class: PuppetLibrary::Forge::Abstract

Inherits:
Forge
  • Object
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

Direct Known Subclasses

Directory, GitRepository, Source

Instance Method Summary collapse

Methods inherited from Forge

#clear_cache, #prime

Methods included from Util::Logging

#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,  = {})
    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



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

#get_module_metadata(author, name) ⇒ Object

Raises:



48
49
50
51
52
53
54
55
56
# File 'lib/puppet_library/forge/abstract.rb', line 48

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:



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 (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|
        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

#retrieve_all_metadataObject



98
99
100
# File 'lib/puppet_library/forge/abstract.rb', line 98

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

#retrieve_metadata(author, module_name) ⇒ Object



94
95
96
# File 'lib/puppet_library/forge/abstract.rb', line 94

def (author, module_name)
    @repo.(author, module_name).map {|| ModuleMetadata.new()}
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 = .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