Skip to content

Commit 1960149

Browse files
author
Ilja Bobkevic
committed
Add private endorsement tag
1. Add Module model 2. Use private field to mark locally served modules 3. Add private tag image 4. Remove separate target for upload page
1 parent 6c5bd47 commit 1960149

File tree

13 files changed

+113
-71
lines changed

13 files changed

+113
-71
lines changed

lib/puppet_forge_server.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ module Backends
5151
module Models
5252
autoload :Builder, 'puppet_forge_server/models/builder'
5353
autoload :Metadata, 'puppet_forge_server/models/metadata'
54+
autoload :Module, 'puppet_forge_server/models/module'
5455
autoload :Dependency, 'puppet_forge_server/models/dependency'
5556
end
5657

lib/puppet_forge_server/api/v1/modules.rb

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,26 @@ module Modules
2020
def get_modules(metadata)
2121
modules = {}
2222
metadata.each do |element|
23-
if modules[element[:metadata].name]
24-
if max_version(modules[element[:metadata].name][:version], element[:metadata].version) == element[:metadata].version
25-
modules[element[:metadata].name][:desc] = element[:metadata].description
26-
modules[element[:metadata].name][:version] = element[:metadata].version
27-
modules[element[:metadata].name][:project_url] = element[:metadata].project_page
23+
if modules[element.metadata.name]
24+
if max_version(modules[element.metadata.name][:version], element.metadata.version) == element.metadata.version
25+
modules[element.metadata.name][:desc] = element.metadata.description
26+
modules[element.metadata.name][:version] = element.metadata.version
27+
modules[element.metadata.name][:project_url] = element.metadata.project_page
2828
end
29-
modules[element[:metadata].name][:releases] = (modules[element[:metadata].name][:releases] + releases_version(element[:metadata])).uniq.sort_by { |r| Gem::Version.new(r[:version]) }.reverse
30-
modules[element[:metadata].name][:tag_list] = (modules[element[:metadata].name][:tag_list] + element[:tags]).uniq.compact
29+
modules[element.metadata.name][:releases] = (modules[element.metadata.name][:releases] + releases_version(element.metadata)).uniq.sort_by { |r| Gem::Version.new(r[:version]) }.reverse
30+
modules[element.metadata.name][:tag_list] = (modules[element.metadata.name][:tag_list] + element.tags).uniq.compact
3131
else
32-
name = element[:metadata].name.sub(/^[^-]+-/, '')
33-
modules[element[:metadata].name] = {
34-
:author => element[:metadata].author,
35-
:full_name => element[:metadata].name.sub('-', '/'),
32+
name = element.metadata.name.sub(/^[^-]+-/, '')
33+
modules[element.metadata.name] = {
34+
:author => element.metadata.author,
35+
:full_name => element.metadata.name.sub('-', '/'),
3636
:name => name,
37-
:desc => element[:metadata].description,
38-
:version => element[:metadata].version,
39-
:project_url => element[:metadata].project_page,
40-
:releases => releases_version(element[:metadata]),
41-
:tag_list => element[:tags] ? element[:tags] : [element[:metadata].author, name],
37+
:desc => element.metadata.description,
38+
:version => element.metadata.version,
39+
:project_url => element.metadata.project_page,
40+
:releases => releases_version(element.metadata),
41+
:tag_list => element.tags ? element.tags : [element.metadata.author, name],
42+
:private => element.private
4243
}
4344
end
4445
end

lib/puppet_forge_server/api/v1/releases.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ module Releases
1919
def get_releases(metadata)
2020
metadata.map do |element|
2121
{
22-
:file => "/api/v1/files#{element[:path]}",
23-
:version => element[:metadata].version,
24-
:dependencies => element[:metadata].dependencies.map {|dep| [dep.name, dep.version_requirement]}.compact
22+
:file => "/api/v1/files#{element.path}",
23+
:version => element.metadata.version,
24+
:dependencies => element.metadata.dependencies.map {|dep| [dep.name, dep.version_requirement]}.compact
2525
}
2626
end.uniq{|r| r[:version]}.sort_by {|r| Gem::Version.new(r[:version])}
2727
end

lib/puppet_forge_server/api/v3/modules.rb

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,24 @@ module Modules
2121
def get_modules(metadata)
2222
modules = {}
2323
metadata.each do |element|
24-
if modules[element[:metadata].name]
25-
if max_version(modules[element[:metadata].name][:current_release][:version], element[:metadata].version) == element[:metadata].version
24+
if modules[element.metadata.name]
25+
if max_version(modules[element.metadata.name][:current_release][:version], element.metadata.version) == element.metadata.version
2626
# Saving curret release tags for merging with new max version current release
27-
tags = modules[element[:metadata].name][:current_release][:tags]
28-
modules[element[:metadata].name][:current_release] = get_releases([element]).first
29-
modules[element[:metadata].name][:current_release][:tags] = (modules[element[:metadata].name][:current_release][:tags] + tags).uniq.compact
27+
tags = modules[element.metadata.name][:current_release][:tags]
28+
modules[element.metadata.name][:current_release] = get_releases([element]).first
29+
modules[element.metadata.name][:current_release][:tags] = (modules[element.metadata.name][:current_release][:tags] + tags).uniq.compact
3030
end
31-
modules[element[:metadata].name][:releases] = (modules[element[:metadata].name][:releases] + releases_version(element[:metadata])).uniq.sort_by { |r| Gem::Version.new(r[:version]) }.reverse
31+
modules[element.metadata.name][:releases] = (modules[element.metadata.name][:releases] + releases_version(element.metadata)).uniq.sort_by { |r| Gem::Version.new(r[:version]) }.reverse
3232
else
33-
modules[element[:metadata].name] = {
34-
:uri => "/v3/modules/#{element[:metadata].name}",
35-
:name => element[:metadata].name.sub(/^[^-]+-/, ''),
36-
:homepage_url => element[:metadata].project_page,
37-
:issues_url => element[:metadata].issues_url,
38-
:releases => releases_version(element[:metadata]),
33+
modules[element.metadata.name] = {
34+
:uri => "/v3/modules/#{element.metadata.name}",
35+
:name => element.metadata.name.sub(/^[^-]+-/, ''),
36+
:homepage_url => element.metadata.project_page,
37+
:issues_url => element.metadata.issues_url,
38+
:releases => releases_version(element.metadata),
3939
:current_release => get_releases([element]).first,
40-
:owner => {:username => element[:metadata].author, :uri => "/v3/users/#{element[:metadata].author}"}
40+
:owner => {:username => element.metadata.author, :uri => "/v3/users/#{element.metadata.author}"},
41+
:private => element.private
4142
}
4243
end
4344
end

lib/puppet_forge_server/api/v3/releases.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@ module PuppetForgeServer::Api::V3
1818
module Releases
1919
def get_releases(metadata)
2020
metadata.map do |element|
21-
name = element[:metadata].name.sub(/^[^-]+-/, '')
22-
author = element[:metadata].name.split('-')[0]
21+
name = element.metadata.name.sub(/^[^-]+-/, '')
22+
author = element.metadata.name.split('-')[0]
2323
{
24-
:uri => "/v3/releases/#{element[:metadata].name}-#{element[:metadata].version}",
24+
:uri => "/v3/releases/#{element.metadata.name}-#{element.metadata.version}",
2525
:module => {
26-
:uri => "/v3/modules/#{element[:metadata].name}",
26+
:uri => "/v3/modules/#{element.metadata.name}",
2727
:name => name,
2828
:owner => {:username => author, :uri => "/v3/users/#{author}"}
2929
},
30-
:metadata => element[:metadata].to_hash,
31-
:version => element[:metadata].version,
32-
:tags => element[:tags] ? element[:tags] : [element[:metadata].author, name],
33-
:file_uri => "/v3/files#{element[:path]}",
34-
:file_md5 => element[:checksum],
35-
:deleted_at => element[:deleted_at]
30+
:metadata => element.metadata.to_hash,
31+
:version => element.metadata.version,
32+
:tags => element.tags ? element.tags : [element.metadata.author, name],
33+
:file_uri => "/v3/files#{element.path}",
34+
:file_md5 => element.checksum,
35+
:deleted_at => element.deleted_at
3636
}
3737
end.uniq{|r| r[:version]}.sort_by { |r| Gem::Version.new(r[:version]) }
3838
end

lib/puppet_forge_server/app/public/css/puppetlabs.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@ span.release-info {
244244
font-size: 0.9em;
245245
color: #6c6d6d;
246246
}
247+
li.private {
248+
background-image: url("/img/endorsement-private.png");
249+
background-repeat: no-repeat;
250+
background-position: right top;
251+
}
247252
p {
248253
margin: 0;
249254
}
3.32 KB
Loading

lib/puppet_forge_server/app/views/layout.haml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
%li.active
4141
%a{:href => 'https://forge.puppetlabs.com/', :target => 'official-puppet-forge'} Official Puppet Forge
4242
%li
43-
%a{:href => '/upload', :target => 'Upload Puppet module'}
43+
%a{:href => '/upload'}
4444
Upload Puppet Module
4545
%li
4646
%a{:href => 'https://github.com/unibet/puppet-forge-server', :target => 'puppet-forge-server-github'} Help

lib/puppet_forge_server/app/views/modules.haml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
.list-container
1919
%ul.list.modules
2020
- modules.each do |element|
21-
%li.clearfix
21+
- if element['private']
22+
%li.clearfix.private
23+
- else
24+
%li.clearfix
2225
.col
2326
%h3= "#{element['owner']['username']}/#{element['name']}"
2427
%p= element['current_release']['metadata']['summary']

lib/puppet_forge_server/backends/directory.rb

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ def initialize(url)
3131
end
3232

3333
def query_metadata(query, options = {})
34-
get_file_metadata("*#{query}*.tar.gz", options)
34+
get_modules("*#{query}*.tar.gz", options)
3535
end
3636

3737
def get_metadata(author, name, options = {})
3838
version = options[:version] ? options[:version] : '*'
39-
get_file_metadata("#{author}-#{name}-#{version}.tar.gz", options)
39+
get_modules("#{author}-#{name}-#{version}.tar.gz", options)
4040
end
4141

4242
def get_file_buffer(relative_path)
@@ -74,22 +74,24 @@ def parse_dependencies(metadata)
7474
metadata
7575
end
7676

77-
def get_file_metadata(file_name, options)
77+
def get_modules(file_name, options)
7878
options = ({:with_checksum => true}).merge(options)
79-
file_metadata = []
79+
modules = []
8080
Dir["#{@module_dir}/**/#{file_name}"].each do |path|
8181
metadata_raw = read_metadata(path)
8282
if metadata_raw
83-
file_metadata << {
83+
modules <<
84+
PuppetForgeServer::Models::Module.new({
8485
:metadata => parse_dependencies(PuppetForgeServer::Models::Metadata.new(normalize_metadata(metadata_raw))),
8586
:checksum => options[:with_checksum] == true ? Digest::MD5.file(path).hexdigest : nil,
86-
:path => "/#{File.basename(path)}"
87-
}
87+
:path => "/#{File.basename(path)}",
88+
:private => ! @readonly
89+
})
8890
else
8991
@log.error "Failed reading metadata from #{path}"
9092
end
9193
end
92-
file_metadata
94+
modules
9395
end
9496
end
9597
end

0 commit comments

Comments
 (0)