Module: OssAudit::Output

Defined in:
lib/oss_audit/output.rb

Class Method Summary collapse

Class Method Details

.as_csv(dependencies, simple = true) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/oss_audit/output.rb', line 11

def self.as_csv(dependencies, simple=true)
  headers = dependencies.map{|x| x.keys}.flatten.uniq

  if simple
    headers = %w(manager name version licenses homepage source)
    dependencies = simplify(dependencies)
  end
  
  return CSV.generate('', :headers => headers, :col_sep => "\t", :write_headers => true) do |csv|
    dependencies.each do |dependency|
      csv << headers.map{|x| dependency[x]}.map{|x| to_s(x)}
    end
  end
end

.as_json(dependencies, simple = true) ⇒ Object



26
27
28
29
# File 'lib/oss_audit/output.rb', line 26

def self.as_json(dependencies, simple=true)
  dependencies = simplify(dependencies) if simple
  return JSON.pretty_generate(dependencies)
end

.format(dependencies, type = 'json', simple = true) ⇒ Object



7
8
9
# File 'lib/oss_audit/output.rb', line 7

def self.format(dependencies, type='json', simple=true)
  send("as_#{type}", uniq(dependencies), simple)
end

.simplify(dependencies) ⇒ Object



31
32
33
34
# File 'lib/oss_audit/output.rb', line 31

def self.simplify(dependencies)
  keys = %w(manager name version licenses homepage source)
  return dependencies.map{|x| x.slice(*keys)}
end

.to_s(object) ⇒ Object



36
37
38
# File 'lib/oss_audit/output.rb', line 36

def self.to_s(object)
  object.is_a?(Array) ? (object.empty? ? nil : object.join(',')) : object
end

.uniq(dependencies) ⇒ Object



40
41
42
43
44
# File 'lib/oss_audit/output.rb', line 40

def self.uniq(dependencies)
  dependencies
    .uniq{|x| x['name']}
    .sort{|a,b| a['name'] <=> b['name']}
end