Class: Puppet::Forge

Inherits:
Object show all
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

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.

Parameters:

  • author (String)

    module’s author name

  • mod_name (String)

    module name

  • version (String)

    optional module version number

Returns:

  • (Array)

    module and dependency metadata

Raises:



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(author, 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"
}

]

Parameters:

  • term (String)

    search term

Returns:

  • (Array)

    modules found

Raises:



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

#uriObject



96
97
98
# File 'lib/puppet/forge.rb', line 96

def uri
  repository.uri
end