20
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
47
|
# File 'lib/puppet_forge_server/api/v1/modules.rb', line 20
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
name = element[:metadata].name.sub(/^[^-]+-/, '')
modules[element[:metadata].name] = {
:author => element[:metadata].author,
:full_name => element[:metadata].name.sub('-', '/'),
:name => name,
:desc => element[:metadata].description,
:version => element[:metadata].version,
:project_url => element[:metadata].project_page,
:releases => releases_version(element[:metadata]),
:tag_list => element[:tags] ? element[:tags] : [element[:metadata].author, name],
}
end
end
modules.values
end
|