Class: Puppet::Forge
- Includes:
- Errors
- Defined in:
- lib/puppet/forge.rb,
lib/puppet/forge/cache.rb,
lib/puppet/forge/repository.rb
Defined Under Namespace
Modules: Errors Classes: Cache, Repository
Instance Method Summary collapse
-
#initialize(consumer_name, consumer_semver) ⇒ Forge
constructor
consumer_nameis a name to be used for identifying the consumer of the forge andconsumer_semveris a SemVer object to identify the version of the consumer. -
#remote_dependency_info(author, mod_name, version) ⇒ Array
Return a list of module metadata hashes for the module requested and all of its dependencies.
- #retrieve(release) ⇒ Object
-
#search(term) ⇒ Array
Return a list of module metadata hashes that match the search query.
- #uri ⇒ Object
Constructor Details
#initialize(consumer_name, consumer_semver) ⇒ Forge
consumer_name is a name to be used for identifying the consumer of the forge and consumer_semver is a SemVer object to identify the version of the consumer
15 16 17 18 |
# File 'lib/puppet/forge.rb', line 15 def initialize(consumer_name, consumer_semver) @consumer_name = consumer_name @consumer_semver = consumer_semver end |
Instance Method Details
#remote_dependency_info(author, mod_name, version) ⇒ Array
Return a list of module metadata hashes for the module requested and all of its dependencies.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/puppet/forge.rb', line 75 def remote_dependency_info(, mod_name, version) version_string = version ? "&version=#{version}" : '' response = repository.make_http_request("/api/v1/releases.json?module=#{author}/#{mod_name}#{version_string}") json = PSON.parse(response.body) rescue {} case response.code when "200" return json else error = json['error'] if error && error =~ /^Module #{author}\/#{mod_name} has no release/ return [] else raise ResponseError.new(:uri => uri.to_s, :input => "#{author}/#{mod_name}", :message => error, :response => response) end end end |
#retrieve(release) ⇒ Object
92 93 94 |
# File 'lib/puppet/forge.rb', line 92 def retrieve(release) repository.retrieve(release) end |
#search(term) ⇒ Array
Return a list of module metadata hashes that match the search query. This return value is used by the module_tool face install search, and displayed to on the console.
Example return value:
[
{
"author" => "puppetlabs",
"name" => "bacula",
"tag_list" => ["backup", "bacula"],
"releases" => [{"version"=>"0.0.1"}, {"version"=>"0.0.2"}],
"full_name" => "puppetlabs/bacula",
"version" => "0.0.2",
"project_url" => "http://github.com/puppetlabs/puppetlabs-bacula",
"desc" => "bacula"
}
]
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/puppet/forge.rb', line 47 def search(term) server = Puppet.settings[:module_repository] Puppet.notice "Searching #{server} ..." response = repository.make_http_request("/modules.json?q=#{URI.escape(term)}") case response.code when "200" matches = PSON.parse(response.body) else raise ResponseError.new(:uri => uri.to_s, :input => term, :response => response) end matches end |