class Librarian::Puppet::Source::Forge::RepoV3

Public Class Methods

new(source, name) click to toggle source
Calls superclass method Librarian::Puppet::Source::Repo.new
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 13
def initialize(source, name)
  PuppetForge.host = source.uri.clone
  super(source, name)
end

Public Instance Methods

dependencies(version) click to toggle source
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 22
def dependencies(version)
  array = get_release(version).metadata[:dependencies].map{|d| [d['name'], d['version_requirement']]}
  Hash[*array.flatten(1)]
end
get_versions() click to toggle source
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 18
def get_versions
  get_module.releases.map{|r| r.version}
end
url(name, version) click to toggle source
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 27
def url(name, version)
  if name == "#{get_module().owner.username}/#{get_module().name}"
    release = get_release(version)
  else
    # should never get here as we use one repo object for each module (to be changed in the future)
    debug { "Looking up url for #{name}@#{version}" }
    release = PuppetForge::Release.find("#{name}-#{version}")
  end
  "#{source}#{release.file_uri}"
end

Private Instance Methods

get_module() click to toggle source
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 40
def get_module
  @module ||= PuppetForge::Module.find(name)
  raise(Error, "Unable to find module '#{name}' on #{source}") unless @module
  @module
end
get_release(version) click to toggle source
# File lib/librarian/puppet/source/forge/repo_v3.rb, line 46
def get_release(version)
  release = get_module.releases.find{|r| r.version == version.to_s}
  if release.nil?
    versions = get_module.releases.map{|r| r.version}
    raise Error, "Unable to find version '#{version}' for module '#{name}' on #{source} amongst #{versions}"
  end
  release
end