in lib/gitlab/license/analyzer.rb [106:157]
def self.analyze(json_data)
violations = []
output_json = {}
json_data.each do |library|
level = 0
name = library['name']
license = library['license'].strip.delete('"').delete("'")
version = library['version']
status, reason = acceptable?(name, license.strip)
message = status_string(name, version, license, status, reason, level)
puts message
violations << "#{name} - #{version} - #{license} - #{reason}" if status == 'unacceptable'
output_json[name] = {
license: license,
version: version,
status: status,
reason: reason,
dependencies: {}
}
library['dependencies'].each do |dependency|
level = 1
name = dependency['name']
license = dependency['license'].strip.delete('"').delete("'")
version = dependency['version']
status, reason = acceptable?(name, license.strip)
message = status_string(name, version, license, status, reason, level)
puts message
violations << "#{name} - #{version} - #{license} - #{reason}" if status == 'unacceptable'
output_json[library['name']][:dependencies][name] = {
license: license,
version: version,
status: status,
reason: reason,
}
end
end
File.open("pkg/#{Build::Info::Package.name}_#{Build::Info::Package.release_version}.license-status.json", "w") do |f|
f.write(JSON.pretty_generate(output_json))
end
violations.uniq
end