lib/inspec_tools/csv.rb in inspec_tools-2.1.0 vs lib/inspec_tools/csv.rb in inspec_tools-2.2.0

- old
+ new

@@ -19,16 +19,16 @@ @mapping = Utils::MappingValidator.validate(mapping) @verbose = verbose @csv.shift if @mapping['skip_csv_header'] end - def to_inspec + def to_inspec(control_name_prefix: nil) @controls = [] @profile = {} @cci_xml = Utils::CciXml.get_cci_list('U_CCI_List.xml') insert_metadata - parse_controls + parse_controls(control_name_prefix) @profile['controls'] = @controls @profile['sha256'] = Digest::SHA256.hexdigest(@profile.to_s) @profile end @@ -64,16 +64,16 @@ # If the content has been exported from STIG Viewer, the cell will have extra information cell.split("\n").first end - def parse_controls + def parse_controls(prefix) @csv.each do |row| control = {} - control['id'] = row[@mapping['control.id']] unless @mapping['control.id'].nil? || row[@mapping['control.id']].nil? - control['title'] = row[@mapping['control.title']] unless @mapping['control.title'].nil? || row[@mapping['control.title']].nil? - control['desc'] = row[@mapping['control.desc']] unless @mapping['control.desc'].nil? || row[@mapping['control.desc']].nil? + control['id'] = generate_control_id(prefix, row[@mapping['control.id']]) unless @mapping['control.id'].nil? || row[@mapping['control.id']].nil? + control['title'] = row[@mapping['control.title']] unless @mapping['control.title'].nil? || row[@mapping['control.title']].nil? + control['desc'] = row[@mapping['control.desc']] unless @mapping['control.desc'].nil? || row[@mapping['control.desc']].nil? control['tags'] = {} cci_number = get_cci_number(row[@mapping['control.tags']['cci']]) nist = get_nist_reference(cci_number) unless cci_number.nil? control['tags']['nist'] = nist unless nist.nil? || nist.include?(nil) @mapping['control.tags'].each do |tag| @@ -88,7 +88,17 @@ control['tags']['severity'] = Utils::InspecUtil.get_impact_string(control['impact']) end @controls << control end end + + def generate_control_id(prefix, id) + return id if prefix.nil? + + "#{prefix}-#{id}" + end end end + +# rubocop:enable Metrics/AbcSize +# rubocop:enable Metrics/PerceivedComplexity +# rubocop:enable Metrics/CyclomaticComplexity