opencontrol-linter 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 175bd0dd088a192c67e4eedd12aa96df5e33a144
4
- data.tar.gz: 869a4dc6ef1c6934a506585f84f681bb68820b64
3
+ metadata.gz: 9e890118e6b1b1a483d9dc72f7f90d27dedbf8af
4
+ data.tar.gz: b823064260b3dbd1fce4ff702752323c3e6de6ff
5
5
  SHA512:
6
- metadata.gz: 4ee06d87c4a273ac8731ab79a0073d094d094044f91db05c1c6fe5eee6e6f07eaa4a2a74a5d8f0a4401e76ef3be9e418fe865af5ae01e35242c845c2370d7cab
7
- data.tar.gz: 2b32e890b5ecc89d4b52f3c0d7da04ce56a45e5f8fdd116b547ed9c7bb102bd75d675fb7f8a79496ba8173a813eb6da19f64e8225bb5882fbc10ad912a20392f
6
+ metadata.gz: cdcd4931f2488c2efb2ff9471bcbcd22408703dd694b0b73e6e3b0d28a7b19faeb7b2b5e687f35ea63dede1421e1dc1371419a689eb5f26bcbd6c7cf6e1dafaa
7
+ data.tar.gz: 548245c81271b7ae37489a3f7e727cb979a0765e50474adaf6c2c167773d022ec4132635b31ab61dfe248cfaa451edb88e331cf79699e0e65636f5abf29d39f4
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "yaml"
5
+ require "json"
6
+ require "pp"
7
+ require 'date'
8
+ require 'csv'
9
+ require 'colorize'
10
+
11
+ DEFAULT_OPENCONTROLS_FILENAME = "./opencontrols/opencontrol.yaml".freeze
12
+ CFACTS_COLUMNS = ['Control Key', 'Response']
13
+ opencontrols_filename = DEFAULT_OPENCONTROLS_FILENAME
14
+ cfacts_csv_filename = "./opencontrols/opencontrol.cfacts.csv".freeze
15
+
16
+ puts "OpenControl conversion to CSV CFACTS format starting".green
17
+
18
+ if not File.exists?(opencontrols_filename)
19
+ puts "Expected an opencontrol.yaml, but could not find opencontrol.yaml " +
20
+ "in this directory.".red
21
+ exit(1)
22
+ end
23
+
24
+ puts " . Reading OpenControl components:"
25
+ control_responses = {}
26
+ opencontrols = YAML.load_file(opencontrols_filename)
27
+
28
+ opencontrols['data']['components'].each do |component|
29
+ puts " . #{component['name']}"
30
+ component['satisfies'].each do |control|
31
+ key = "#{control['standard_key']} #{control['control_key']}"
32
+ control_responses[key] = {} unless control_responses.has_key?(key)
33
+ control_responses[key]['text'] = "" unless control_responses[key].has_key?('text')
34
+ control_responses[key]['control_key'] = control['control_key']
35
+ control_responses[key]['standard_key'] = control['standard_key']
36
+ control['narrative'].each do |narrative|
37
+ control_responses[key]['text'] += key + "\n"
38
+ control_responses[key]['text'] += narrative['text']
39
+ control_responses[key]['text'] += "\n"
40
+ end
41
+ end
42
+ end
43
+
44
+ puts " . Building CFACTS file:"
45
+ CSV.open(cfacts_csv_filename, "w") do |csv|
46
+ csv << CFACTS_COLUMNS
47
+ control_responses.each do |key, control_response|
48
+ puts " . #{control_response['control_key']}"
49
+ csv << [control_response['control_key'], control_response['text']]
50
+ end
51
+ end
52
+
53
+ puts "Completed (OpenControl 2 CFACTS)".green
@@ -69,7 +69,7 @@ USAGE_TEXT
69
69
  './opencontrol.yaml'
70
70
  ]
71
71
  }
72
- }.freeze
72
+ }
73
73
 
74
74
  ALIASES = {
75
75
  components: %w[component c],
@@ -114,7 +114,7 @@ USAGE_TEXT
114
114
  def self.construct_defaults(config)
115
115
  spec = {
116
116
  action: :run,
117
- targets: {}.merge(PRESET[:targets]).merge(config[:targets])
117
+ targets: {}.merge(PRESET[:targets].dup).merge(config[:targets])
118
118
  }
119
119
 
120
120
  expand_components_filenames(spec)
@@ -144,7 +144,7 @@ USAGE_TEXT
144
144
  if opencontrol_yaml_present?
145
145
  construct_defaults(load_config_from_yaml)
146
146
  else
147
- PRESET
147
+ PRESET.dup
148
148
  end
149
149
  end
150
150
 
@@ -3,7 +3,7 @@
3
3
  module Opencontrol
4
4
  # This module holds the Opencontrol Linter version information.
5
5
  module Version
6
- STRING = '0.1.2'.freeze
6
+ STRING = '0.1.3'.freeze
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, running on ' \
9
9
  '%<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'.freeze
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opencontrol-linter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Kierman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-02-26 00:00:00.000000000 Z
12
+ date: 2019-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colorize
@@ -129,6 +129,20 @@ dependencies:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: '1.7'
132
+ - !ruby/object:Gem::Dependency
133
+ name: csv
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 3.0.4
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 3.0.4
132
146
  - !ruby/object:Gem::Dependency
133
147
  name: bundler
134
148
  requirement: !ruby/object:Gem::Requirement
@@ -253,6 +267,7 @@ description: |2
253
267
  email:
254
268
  executables:
255
269
  - opencontrol-linter
270
+ - opencontrol2cfacts
256
271
  extensions: []
257
272
  extra_rdoc_files:
258
273
  - LICENSE.txt
@@ -261,6 +276,7 @@ files:
261
276
  - LICENSE.txt
262
277
  - README.md
263
278
  - exe/opencontrol-linter
279
+ - exe/opencontrol2cfacts
264
280
  - lib/opencontrol.rb
265
281
  - lib/opencontrol/cli.rb
266
282
  - lib/opencontrol/linter.rb