-
Notifications
You must be signed in to change notification settings - Fork 339
/
erb_report.rb
62 lines (50 loc) · 1.51 KB
/
erb_report.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
require 'erb'
module LicenseFinder
class ErbReport < Report
TEMPLATE_PATH = ROOT_PATH.join('reports', 'templates')
def to_s(filename = TEMPLATE_PATH.join("#{template_name}.erb"))
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.6.0')
template = ERB.new(filename.read, nil, '-')
else
template = ERB.new(filename.read, trim_mode: '-')
end
template.result(binding)
end
private
def unapproved_dependencies
dependencies.reject(&:approved?)
end
def grouped_dependencies
dependencies
.group_by { |dep| license_names(dep) }
.sort_by { |_, group| -group.size }
end
def link_to_license(license)
link_to_maybe (@use_spdx_id ? license.standard_id : license.name), license.url
end
def link_to_dependency(dependency)
link_to_maybe dependency.name, dependency.homepage
end
def link_to_maybe(text, link)
if link && !link.empty?
link_to(text, link)
else
text
end
end
def link_to(text, link = "##{text}")
%(<a href="#{link}">#{text}</a>)
end
def license_names(dependency)
dependency.licenses.map(&@use_spdx_id? :standard_id : :name).sort.join ', '
end
def license_links(dependency)
dependency.licenses.map { |l| link_to_license(l) }.join(', ')
end
def version_groups(dependency)
result = "v#{dependency.version}"
result << " (#{dependency.groups.join(', ')})" if dependency.groups.any?
result
end
end
end