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