Sha256: c04c54d92aee7f1dc8f144917f08c37773052dfe74543551bdc02d3f97b95da0

Contents?: true

Size: 1.34 KB

Versions: 31

Compression:

Stored size: 1.34 KB

Contents

require 'roo'

module Util
  class ExtractNistMappings
    def initialize(file)
      @file = file
      @full_excel = []
      @headers = {}

      open_excel
      set_working_sheet
      map_headers
      retrieve_mappings
    end

    def open_excel
      @xlsx = Roo::Excelx.new(@file)
    end

    def full_excl
      @full_excel
    end

    def set_working_sheet
      @xlsx.default_sheet = 'VER 6.1 Controls'
    end

    def map_headers
      @xlsx.row(3).each_with_index { |header, i|
        @headers[header] = i
      }
    end

    def retrieve_mappings
      nist_ver = 4
      cis_ver = @xlsx.row(2)[4].split(' ')[-1]
      ctrl_count = 1
      ((@xlsx.first_row + 3)..@xlsx.last_row).each do |row_value|
        current_row = {}
        if @xlsx.row(row_value)[@headers['NIST SP 800-53 Control #']].to_s != ''
          current_row[:nist] = @xlsx.row(row_value)[@headers['NIST SP 800-53 Control #']].to_s
        else
          current_row[:nist] = 'Not Mapped'
        end
        current_row[:nist_ver] = nist_ver
        if @xlsx.row(row_value)[@headers['Control']].to_s == ''
          current_row[:cis] = ctrl_count.to_s
          ctrl_count += 1
        else
          current_row[:cis] = @xlsx.row(row_value)[@headers['Control']].to_s
        end
        current_row[:cis_ver] = cis_ver
        @full_excel << current_row
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
inspec_tools-2.0.6 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.5 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.4 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.3 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre13 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-0.0.0.1.ENOTAG lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre11 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre10 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre9 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre8 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre7 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre6 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.2.pre5 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.1.pre4 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.1.pre3 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.1.pre2 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.1.pre1 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-2.0.0 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-1.8.3 lib/utilities/extract_nist_cis_mapping.rb
inspec_tools-1.8.2 lib/utilities/extract_nist_cis_mapping.rb