Class: R10K::ModuleRepository::Forge

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/r10k/module_repository/forge.rb

Constant Summary

Constants included from Logging

Logging::LOG_LEVELS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logging

debug_formatter, default_formatter, default_outputter, #logger, #logger_name, parse_level

Constructor Details

#initialize(forge = 'forgeapi.puppetlabs.com') ⇒ Forge

Returns a new instance of Forge.



23
24
25
26
27
28
29
30
# File 'lib/r10k/module_repository/forge.rb', line 23

def initialize(forge = 'forgeapi.puppetlabs.com')
  if forge =~ /forge\.puppetlabs\.com/
    logger.warn("#{forge} does not support the latest puppet forge API. Please update to \"forge 'https://forgeapi.puppetlabs.com'\"")
    forge = 'forgeapi.puppetlabs.com'
  end
  @forge = forge
  @conn  = make_conn
end

Instance Attribute Details

#:conn(: conn) ⇒ Faraday (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Faraday)


21
# File 'lib/r10k/module_repository/forge.rb', line 21

attr_reader :conn

#connObject (readonly)

Returns the value of attribute conn.



21
22
23
# File 'lib/r10k/module_repository/forge.rb', line 21

def conn
  @conn
end

#forgeObject (readonly)

Returns the value of attribute forge.



16
17
18
# File 'lib/r10k/module_repository/forge.rb', line 16

def forge
  @forge
end

Instance Method Details

#latest_version(module_name) ⇒ String

Query for the newest published version of a module

Examples:

forge = R10K::ModuleRepository::Forge.new
forge.latest_version('adrien/boolean')
#=> "1.0.1"

Parameters:

  • module_name (String)

    The fully qualified module name

Returns:

  • (String)

    The latest published version of the given module



65
66
67
# File 'lib/r10k/module_repository/forge.rb', line 65

def latest_version(module_name)
  versions(module_name).last
end

#versions(module_name) ⇒ Array<String>

Query for all published versions of a module

Examples:

forge = R10K::ModuleRepository::Forge.new
forge.versions('adrien/boolean')
#=> ["0.9.0-rc1", "0.9.0", "1.0.0", "1.0.1"]

Parameters:

  • module_name (String)

    The fully qualified module name

Returns:

  • (Array<String>)

    All published versions of the given module



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/r10k/module_repository/forge.rb', line 41

def versions(module_name)
  path = "/v3/modules/#{module_name.tr('/','-')}"
  response = @conn.get(path)

  if response.status != 200
    raise R10K::Error.new("Request to Puppet Forge '#{path}' failed. Status: #{response.status}")
  end

  releases = response.body['releases'].reject { |r| r['deleted_at'] }
  releases = releases.map do |version_info|
    version_info['version']
  end
  releases.reverse
end