Module: PuppetForgeServer::Api::V3::Modules

Includes:
Releases
Included in:
PuppetForgeServer::App::Version3
Defined in:
lib/puppet_forge_server/api/v3/modules.rb

Instance Method Summary collapse

Methods included from Releases

#get_releases

Instance Method Details

#get_modules(metadata) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/puppet_forge_server/api/v3/modules.rb', line 21

def get_modules()
  modules = {}
  .each do |element|
    if modules[element[:metadata].name]
      if max_version(modules[element[:metadata].name][:current_release][:version], element[:metadata].version) == element[:metadata].version
        tags = modules[element[:metadata].name][:current_release][:tags]
        modules[element[:metadata].name][:current_release] = get_releases([element]).first
        modules[element[:metadata].name][:current_release][:tags] = (modules[element[:metadata].name][:current_release][:tags] + tags).uniq
      end
      modules[element[:metadata].name][:releases] = (modules[element[:metadata].name][:releases] + releases_version(element[:metadata])).version_sort_by { |r| r[:version] }.reverse
    else
      name = element[:metadata].name.sub(/^[^-]+-/, '')
      author = element[:metadata].name.split('-')[0]
      modules[element[:metadata].name] = {
          :uri => "/v3/modules/#{element[:metadata].name}",
          :name => name,
          :homepage_url => element[:metadata].project_page,
          :issues_url => element[:metadata].issues_url,
          :releases => releases_version(element[:metadata]),
          :current_release => get_releases([element]).first,
          :owner => {:username => author, :uri => "/v3/users/#{author}"}
      }
    end
  end
  modules.values
end