aboutsummaryrefslogtreecommitdiff
path: root/bin/cisa-sizes.rb
blob: 88ec7d3ccd60a4efa297d2c18049eb55f4a559a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env ruby

#
# cisa-sizes.rb: get maximum field lengths from compressed cisa
# kev catalog.
#

require 'json'
require 'zlib'

# path to vulnerabilities
PATH = File.join(__dir__, '../cisa/testdata/cisa-kevc-20220313.json.gz')

# read vulns
ROWS = JSON(Zlib::GzipReader.new(File.open(PATH)).read)['vulnerabilities']

# get/print json-encoded maximum field lengths
puts JSON(ROWS.each.with_object(Hash.new { |h, k| h[k] = 0 }) do |row, r|
  row.each { |k, v| r[k] = v.size if v.size > r[k] }
end)