Class: Purl::AdvisoryFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/purl/advisory_formatter.rb

Overview

Formats security advisory lookup results for human-readable display

Instance Method Summary collapse

Constructor Details

#initializeAdvisoryFormatter

Returns a new instance of AdvisoryFormatter.



6
7
# File 'lib/purl/advisory_formatter.rb', line 6

def initialize
end

Instance Method Details

#format_json(advisories, purl) ⇒ Hash

Format advisory lookup results for JSON output

Parameters:

  • advisories (Array<Hash>)

    Array of advisory hashes from Purl::Advisory#lookup

  • purl (PackageURL)

    Original PURL object

Returns:

  • (Hash)

    JSON-ready hash structure



38
39
40
41
42
43
44
45
# File 'lib/purl/advisory_formatter.rb', line 38

def format_json(advisories, purl)
  {
    success: true,
    purl: purl.to_s,
    advisories: advisories,
    count: advisories.length
  }
end

#format_text(advisories, purl) ⇒ String

Format advisory lookup results for console output

Parameters:

  • advisories (Array<Hash>)

    Array of advisory hashes from Purl::Advisory#lookup

  • purl (PackageURL)

    Original PURL object

Returns:

  • (String)

    Formatted output string



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/purl/advisory_formatter.rb', line 14

def format_text(advisories, purl)
  return "No security advisories found" if advisories.nil? || advisories.empty?

  output = []
  output << "Security Advisories for #{purl.to_s}"
  output << "=" * 80
  output << ""

  advisories.each_with_index do |advisory, index|
    output << format_advisory_text(advisory, index + 1)
    output << "" unless index == advisories.length - 1
  end

  output << ""
  output << "Total advisories found: #{advisories.length}"

  output.join("\n")
end