Class: PuppetForge::V3::Module

Inherits:
Object
  • Object
show all
Includes:
Connection
Defined in:
lib/shared/puppet_forge/v3/module.rb

Overview

Represents metadata for a single Forge module and provides access to the releases of a module.

Constant Summary

Constants included from Connection

Connection::USER_AGENT

Instance Attribute Summary collapse

Attributes included from Connection

#conn

Instance Method Summary collapse

Methods included from Connection

authorization, authorization=, #make_connection

Constructor Details

#initialize(full_name) ⇒ Module

Returns a new instance of Module.

Parameters:

  • full_name (String)

    The name of this module, will be normalized to a hyphen separated name.



20
21
22
# File 'lib/shared/puppet_forge/v3/module.rb', line 20

def initialize(full_name)
  @full_name = PuppetForge::V3.normalize_name(full_name)
end

Instance Attribute Details

#full_nameObject (readonly)

Returns the value of attribute full_name.



16
17
18
# File 'lib/shared/puppet_forge/v3/module.rb', line 16

def full_name
  @full_name
end

Instance Method Details

#latest_versionString

Get all released versions of this module

Examples:

mod = PuppetForge::V3::Module.new('timmy-boolean')
mod.latest_version
#=> "1.0.1"

Returns:

  • (String)

    The latest published version of the given module



57
58
59
# File 'lib/shared/puppet_forge/v3/module.rb', line 57

def latest_version
  versions.last
end

#release(version) ⇒ ModuleRelease

Get a specific release of this module off of the forge.

Returns:

  • (ModuleRelease)

    a release object of the given version for this module.



64
65
66
# File 'lib/shared/puppet_forge/v3/module.rb', line 64

def release(version)
  PuppetForge::V3::ModuleRelease.new(@full_name, version).tap { |mr| mr.conn = conn }
end

#versionsArray<String>

Get all released versions of this module

Examples:

mod = PuppetForge::V3::Module.new('timmy-boolean')
mod.versions
#=> ["0.9.0-rc1", "0.9.0", "1.0.0", "1.0.1"]

Returns:

  • (Array<String>)

    All published versions of the given module



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/shared/puppet_forge/v3/module.rb', line 32

def versions
  path = "/v3/modules/#{@full_name}"
  response = conn.get(path)

  releases = []

  response.body['releases'].each do |release|
    if !release['deleted_at']
      releases << release['version']
    end
  end

  releases.reverse
rescue Faraday::ResourceNotFound => e
  raise PuppetForge::ModuleNotFound, "The module #{@full_name} does not exist on #{conn.url_prefix}.", e.backtrace
end