module PuppetForgeServer::Api::V1::Modules

Public Instance Methods

get_modules(metadata) click to toggle source
# File lib/puppet_forge_server/api/v1/modules.rb, line 19
def get_modules(metadata)
  modules = {}
  metadata.each do |element|
    if modules[element.metadata.name]
      if max_version(modules[element.metadata.name][:version], element.metadata.version) == element.metadata.version
        modules[element.metadata.name][:desc] = element.metadata.description
        modules[element.metadata.name][:version] = element.metadata.version
        modules[element.metadata.name][:project_url] = element.metadata.project_page
      end
      modules[element.metadata.name][:releases] = (modules[element.metadata.name][:releases] + releases_version(element.metadata)).uniq.sort_by { |r| Gem::Version.new(r[:version]) }.reverse
      modules[element.metadata.name][:tag_list] = (modules[element.metadata.name][:tag_list] + element.tags).uniq.compact
    else
      author, name = element.metadata.name.split('-')
      unless name
        name = author
        author = element.metadata.author
      end
      modules[element.metadata.name] = {
        :author => author,
        :full_name => element.metadata.name.sub('-', '/'),
        :name => name,
        :desc => element.metadata.description || element.metadata.summary,
        :version => element.metadata.version,
        :project_url => element.metadata.project_page,
        :releases => releases_version(element.metadata),
        :tag_list =>  element.tags ? element.tags : [author, name],
        :private => element.private
      }
    end
  end

  modules.values
end

Private Instance Methods

max_version(left, right) click to toggle source
# File lib/puppet_forge_server/api/v1/modules.rb, line 58
def max_version(left, right)
  [Gem::Version.new(left), Gem::Version.new(right)].max.version
end
releases_version(metadata) click to toggle source
# File lib/puppet_forge_server/api/v1/modules.rb, line 54
def releases_version(metadata)
  [{:version => metadata.version}]
end