cfn-nag 0.4.29 → 0.4.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '011839ee5d19c5990b7fb7b28a87b961336cf98a35a3a7fa5792e01e5d9470cc'
4
- data.tar.gz: b04751c2b454226955d2b6aac10ee005338c9a5cb2aa0f3c34bfd5ca216138b6
3
+ metadata.gz: f82f950358452ac63aa12bde592b60ec9c45e07ab2b21e6c90afa744dc8b372a
4
+ data.tar.gz: cd9c81ca1dbda0f07f426dc11364b2325bfcdbaf699623551d5badaf34784bfc
5
5
  SHA512:
6
- metadata.gz: 98a9ffb0a8d6888eabf60416c88e1ad05626eacf0bf279a05ac973f7140702eec5cc9915acf2464176e1bb43bbccc8decac5dac048a62b6ae95e5fc16f196de8
7
- data.tar.gz: 2c16cc585f3d22f7912d32d38202fe67297ab3c10927f4f5e329384fa0916052cf633027349fbc92db9be496959f0f9346eee423886f8ceef95ab1f3a2e324a8
6
+ metadata.gz: 9895244d3c78061c3e8547870675eeb1327d3080bb384da07a05feae3819c04475226c7b889594bafdf80981719e8c3a89802966bfba6827098b5a5798c68296
7
+ data.tar.gz: eb4fcda99303bdea8ea44f3e7e54889eed6a4f1e0a9c20a8e7d2f08006e01812452c37662c193838aceda3784729f2bf98db559277e9fa2eda3290eeb4db0a9d
@@ -4,7 +4,9 @@ require_relative 'custom_rule_loader'
4
4
  require_relative 'rule_registry'
5
5
  require_relative 'violation_filtering'
6
6
  require_relative 'template_discovery'
7
+ require_relative 'result_view/stdout_results'
7
8
  require_relative 'result_view/simple_stdout_results'
9
+ require_relative 'result_view/colored_stdout_results'
8
10
  require_relative 'result_view/json_results'
9
11
  require 'cfn-model'
10
12
 
@@ -142,6 +144,7 @@ class CfnNag
142
144
 
143
145
  def results_renderer(output_format)
144
146
  registry = {
147
+ 'colortxt' => ColoredStdoutResults,
145
148
  'txt' => SimpleStdoutResults,
146
149
  'json' => JsonResults
147
150
  }
@@ -69,9 +69,9 @@ class CfnNagExecutor
69
69
  end
70
70
 
71
71
  def validate_options(opts)
72
- unless opts[:output_format].nil? || %w[txt json].include?(opts[:output_format])
72
+ unless opts[:output_format].nil? || %w[colortxt txt json].include?(opts[:output_format])
73
73
  Trollop.die(:output_format,
74
- 'Must be txt or json')
74
+ 'Must be colortxt, txt, or json')
75
75
  end
76
76
  end
77
77
 
@@ -79,9 +79,9 @@ class Options
79
79
  required: false,
80
80
  default: false
81
81
  opt :output_format,
82
- 'Format of results: [txt, json]',
82
+ 'Format of results: [txt, json, colortxt]',
83
83
  type: :string,
84
- default: 'txt'
84
+ default: 'colortxt'
85
85
  end
86
86
  end
87
87
 
@@ -104,9 +104,9 @@ class Options
104
104
  type: :string,
105
105
  required: true
106
106
  opt :output_format,
107
- 'Format of results: [txt, json]',
107
+ 'Format of results: [txt, json, colortxt]',
108
108
  type: :string,
109
- default: 'txt'
109
+ default: 'colortxt'
110
110
  opt :debug,
111
111
  'Enable debug output',
112
112
  type: :boolean,
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cfn-nag/violation'
4
+ require 'colorize'
5
+
6
+ # Print results to STDOUT with ANSI color codes
7
+ class ColoredStdoutResults < StdoutResults
8
+ private
9
+
10
+ # rubocop:disable Metrics/AbcSize
11
+ def message(message_type:,
12
+ color:,
13
+ message:,
14
+ logical_resource_ids: nil,
15
+ line_numbers: [])
16
+
17
+ logical_resource_ids = nil if logical_resource_ids == []
18
+
19
+ 60.times { print '-' }
20
+ puts
21
+ puts "| #{message_type.upcase}".send(color)
22
+ puts '|'.send(color)
23
+ puts "| Resources: #{logical_resource_ids}".send(color) unless logical_resource_ids.nil?
24
+ puts "| Line Numbers: #{line_numbers}".send(color) unless line_numbers.empty?
25
+ puts '|'.send(color) unless line_numbers.empty? && logical_resource_ids.nil?
26
+ puts "| #{message}".send(color)
27
+ end
28
+ # rubocop:enable Metrics/AbcSize
29
+ end
@@ -1,50 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'cfn-nag/violation'
4
- require 'colorize'
5
4
 
6
5
  # Print results to STDOUT
7
- class SimpleStdoutResults
8
- def message_violations(violations)
9
- violations.each do |violation|
10
- color = violation.type == 'FAIL' ? :red : :yellow
11
-
12
- message message_type: "#{violation.type} #{violation.id}",
13
- color: color,
14
- message: violation.message,
15
- logical_resource_ids: violation.logical_resource_ids,
16
- line_numbers: violation.line_numbers
17
- end
18
- end
19
-
20
- def print_failures(violations)
21
- puts "\nFailures count: #{Violation.count_failures(violations)}"
22
- end
23
-
24
- def print_warnings(violations)
25
- puts "Warnings count: #{Violation.count_warnings(violations)}"
26
- end
27
-
28
- def render(results)
29
- results.each do |result|
30
- 60.times { print '-' }
31
- puts "\n" + result[:filename]
32
- 60.times { print '-' }
33
-
34
- violations = result[:file_results][:violations]
35
-
36
- message_violations violations
37
- print_failures violations
38
- print_warnings violations
39
- end
40
- end
41
-
6
+ class SimpleStdoutResults < StdoutResults
42
7
  private
43
8
 
44
- # rubocop:disable Metrics/AbcSize
9
+ # rubocop:disable Lint/UnusedMethodArgument
45
10
  def message(message_type:,
46
- color:,
47
11
  message:,
12
+ color:,
48
13
  logical_resource_ids: nil,
49
14
  line_numbers: [])
50
15
 
@@ -52,16 +17,12 @@ class SimpleStdoutResults
52
17
 
53
18
  60.times { print '-' }
54
19
  puts
55
- puts "| #{message_type.upcase}".send(color)
56
- puts '|'.send(color)
57
- puts "| Resources: #{logical_resource_ids}".send(color) unless logical_resource_ids.nil?
58
- puts "| Line Numbers: #{line_numbers}".send(color) unless line_numbers.empty?
59
- puts '|'.send(color) unless line_numbers.empty? && logical_resource_ids.nil?
60
- puts "| #{message}".send(color)
61
- end
62
- # rubocop:enable Metrics/AbcSize
63
-
64
- def indent_multiline_string_with_prefix(prefix, multiline_string)
65
- prefix + ' ' + multiline_string.gsub(/\n/, "\n#{prefix} ")
20
+ puts "| #{message_type.upcase}"
21
+ puts '|'
22
+ puts "| Resources: #{logical_resource_ids}" unless logical_resource_ids.nil?
23
+ puts "| Line Numbers: #{line_numbers}" unless line_numbers.empty?
24
+ puts '|' unless line_numbers.empty? && logical_resource_ids.nil?
25
+ puts "| #{message}"
66
26
  end
27
+ # rubocop:enable Lint/UnusedMethodArgument
67
28
  end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cfn-nag/violation'
4
+ require 'colorize'
5
+
6
+ # Print results to STDOUT
7
+ class StdoutResults
8
+ def message_violations(violations)
9
+ violations.each do |violation|
10
+ color = violation.type == 'FAIL' ? :red : :yellow
11
+
12
+ message message_type: "#{violation.type} #{violation.id}",
13
+ color: color,
14
+ message: violation.message,
15
+ logical_resource_ids: violation.logical_resource_ids,
16
+ line_numbers: violation.line_numbers
17
+ end
18
+ end
19
+
20
+ def print_failures(violations)
21
+ puts "\nFailures count: #{Violation.count_failures(violations)}"
22
+ end
23
+
24
+ def print_warnings(violations)
25
+ puts "Warnings count: #{Violation.count_warnings(violations)}"
26
+ end
27
+
28
+ def render(results)
29
+ results.each do |result|
30
+ 60.times { print '-' }
31
+ puts "\n" + result[:filename]
32
+ 60.times { print '-' }
33
+
34
+ violations = result[:file_results][:violations]
35
+
36
+ message_violations violations
37
+ print_failures violations
38
+ print_warnings violations
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def message
45
+ raise 'Must be implemented in subclass!'
46
+ end
47
+
48
+ def indent_multiline_string_with_prefix(prefix, multiline_string)
49
+ prefix + ' ' + multiline_string.gsub(/\n/, "\n#{prefix} ")
50
+ end
51
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-nag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.29
4
+ version: 0.4.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kascic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-05 00:00:00.000000000 Z
11
+ date: 2019-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -246,9 +246,11 @@ files:
246
246
  - lib/cfn-nag/jmes_path_discovery.rb
247
247
  - lib/cfn-nag/jmes_path_evaluator.rb
248
248
  - lib/cfn-nag/profile_loader.rb
249
+ - lib/cfn-nag/result_view/colored_stdout_results.rb
249
250
  - lib/cfn-nag/result_view/json_results.rb
250
251
  - lib/cfn-nag/result_view/rules_view.rb
251
252
  - lib/cfn-nag/result_view/simple_stdout_results.rb
253
+ - lib/cfn-nag/result_view/stdout_results.rb
252
254
  - lib/cfn-nag/rule_definition.rb
253
255
  - lib/cfn-nag/rule_dumper.rb
254
256
  - lib/cfn-nag/rule_id_set.rb