inspec-core 4.56.17 → 5.10.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/etc/deprecations.json +12 -16
- data/inspec-core.gemspec +1 -1
- data/lib/inspec/base_cli.rb +14 -2
- data/lib/inspec/cli.rb +15 -0
- data/lib/inspec/dependency_installer.rb +74 -0
- data/lib/inspec/dependency_loader.rb +97 -0
- data/lib/inspec/dsl.rb +11 -2
- data/lib/inspec/errors.rb +7 -0
- data/lib/inspec/formatters/base.rb +23 -0
- data/lib/inspec/metadata.rb +36 -0
- data/lib/inspec/plugin/v2/installer.rb +9 -2
- data/lib/inspec/plugin/v2/loader.rb +13 -0
- data/lib/inspec/plugin/v2/plugin_types/streaming_reporter.rb +44 -1
- data/lib/inspec/plugin/v2/status.rb +2 -1
- data/lib/inspec/profile.rb +63 -0
- data/lib/inspec/reporters/automate.rb +1 -1
- data/lib/inspec/reporters/cli.rb +1 -1
- data/lib/inspec/reporters/json.rb +31 -11
- data/lib/inspec/resource.rb +6 -0
- data/lib/inspec/resources/apt.rb +12 -6
- data/lib/inspec/resources/cgroup.rb +101 -0
- data/lib/inspec/resources/cron.rb +49 -0
- data/lib/inspec/resources/ipfilter.rb +59 -0
- data/lib/inspec/resources/ipnat.rb +58 -0
- data/lib/inspec/resources/lxc.rb +57 -0
- data/lib/inspec/resources/oracledb_session.rb +7 -3
- data/lib/inspec/resources/postgres_session.rb +4 -2
- data/lib/inspec/resources/virtualization.rb +9 -3
- data/lib/inspec/resources.rb +3 -16
- data/lib/inspec/runner.rb +18 -1
- data/lib/inspec/runner_rspec.rb +15 -0
- data/lib/inspec/schema/exec_json.rb +59 -58
- data/lib/inspec/schema/exec_json_min.rb +16 -16
- data/lib/inspec/schema/primitives.rb +68 -51
- data/lib/inspec/schema/profile_json.rb +27 -27
- data/lib/inspec/schema.rb +1 -0
- data/lib/inspec/ui.rb +10 -0
- data/lib/inspec/utils/deprecated_cloud_resources_list.rb +54 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/inspec.rb +3 -0
- data/lib/plugins/inspec-artifact/inspec-artifact.gemspec +9 -0
- data/lib/plugins/inspec-compliance/inspec-compliance.gemspec +9 -0
- data/lib/plugins/inspec-habitat/inspec-habitat.gemspec +9 -0
- data/lib/plugins/inspec-init/inspec-init.gemspec +9 -0
- data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -0
- data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +9 -0
- data/lib/plugins/inspec-init/lib/inspec-init/cli_resource.rb +126 -0
- data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +9 -8
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.erb +16 -0
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/streaming_reporter.erb +31 -0
- data/lib/plugins/inspec-init/templates/profiles/aws/inspec.yml +1 -1
- data/lib/plugins/inspec-init/templates/resources/basic/docs/resource-doc.erb +77 -0
- data/lib/plugins/inspec-init/templates/resources/basic/libraries/inspec-resource-template.erb +94 -0
- data/lib/plugins/inspec-init/templates/resources/plural/docs/resource-doc.erb +62 -0
- data/lib/plugins/inspec-init/templates/resources/plural/libraries/inspec-resource-template.erb +73 -0
- data/lib/plugins/inspec-plugin-manager-cli/inspec-plugin-manager-cli.gemspec +10 -0
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +15 -11
- data/lib/plugins/inspec-reporter-html2/inspec-reporter-html2.gemspec +9 -0
- data/lib/plugins/inspec-reporter-html2/templates/body.html.erb +2 -0
- data/lib/plugins/inspec-reporter-html2/templates/control.html.erb +3 -0
- data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +1 -0
- data/lib/plugins/inspec-reporter-html2/templates/result.html.erb +1 -0
- data/lib/plugins/inspec-reporter-json-min/inspec-reporter-json-min.gemspec +9 -0
- data/lib/plugins/inspec-reporter-junit/inspec-reporter-junit.gemspec +9 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/README.md +5 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/inspec-streaming-reporter-progress-bar.gemspec +9 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/plugin.rb +13 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/streaming_reporter.rb +112 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/version.rb +8 -0
- data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar.rb +15 -0
- metadata +31 -3
data/lib/plugins/inspec-init/templates/resources/plural/libraries/inspec-resource-template.erb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# This file was generated by `inspec init resource <%= resource_name %>`
|
2
|
+
# using the "--template plural" option. It represents a "plural" (FilterTable-based)
|
3
|
+
# InSpec resource.
|
4
|
+
|
5
|
+
# Plural resources query multiple resources of the same type in bulk. For details of the
|
6
|
+
# differences between singular and plural resources, please see:
|
7
|
+
# https://www.chef.io/blog/understanding-singular-and-plural-inspec-resources
|
8
|
+
|
9
|
+
# Plural resources rely on the FilterTable facility to handle data lookup and querying.
|
10
|
+
# For details on Filtertable and how to use it effectively within your resource, please see
|
11
|
+
# https://github.com/inspec/inspec/blob/main/dev-docs/filtertable-usage.md
|
12
|
+
# Consider that page required reading for authoring plural resources.
|
13
|
+
|
14
|
+
# Uncomment the below lines to add gems and files required by the resource
|
15
|
+
# require "inspec/utils/filter"
|
16
|
+
# require_relative ""
|
17
|
+
|
18
|
+
# Include FilterTable support
|
19
|
+
require "inspec/utils/filter"
|
20
|
+
|
21
|
+
module Inspec::Resources
|
22
|
+
# Most custom InSpec resource inherit from a dynamic class, InSpec.resource(1).
|
23
|
+
# If you wish to inherit from a core resource, you need to follow special instructions -
|
24
|
+
# see https://www.chef.io/blog/extending-inspec-resources-core-resource-inheritance
|
25
|
+
class <%= class_name %> < Inspec.resource(1)
|
26
|
+
# Every resource requires an internal name.
|
27
|
+
name "<%= resource_name %>"
|
28
|
+
|
29
|
+
# Restrict to only run on the below platforms (if none were given,
|
30
|
+
# all OS's and cloud API's supported)
|
31
|
+
supports platform: "<%= supports_platform %>"
|
32
|
+
|
33
|
+
desc "<%= description %>"
|
34
|
+
|
35
|
+
example <<~EXAMPLE
|
36
|
+
describe <%= resource_name %>.where{ shoe_size > 10 } do
|
37
|
+
its("count") { should cmp 0 }
|
38
|
+
end
|
39
|
+
EXAMPLE
|
40
|
+
|
41
|
+
# Resource initialization. Add any arguments you want to pass to the contructor here.
|
42
|
+
# Anything you pass here will be passed to the "describe" call:
|
43
|
+
# describe <%= resource_name %>(YOUR_PARAMETERS_HERE) do
|
44
|
+
# its("shoe_size") { should cmp 10 }
|
45
|
+
# end
|
46
|
+
def initialize
|
47
|
+
# Initialize required path/params/configs
|
48
|
+
end
|
49
|
+
|
50
|
+
# Define the FilterTable. This will define many extra methods on your resource, including
|
51
|
+
# where(), count(), and a property for every column.
|
52
|
+
table = FilterTable.create
|
53
|
+
table.register_column(:names, field: :name, style: :simple)
|
54
|
+
.register_column(:shoe_sizes, field: :shoe_size)
|
55
|
+
.install_filter_methods_on_resource(self, :fetch_data)
|
56
|
+
|
57
|
+
# Plural resources do not generally define a resource_id.
|
58
|
+
|
59
|
+
# Define how you want your resource to appear in test reports. Commonly, this is just the resource name for plural resources.
|
60
|
+
def to_s
|
61
|
+
"<%= resource_name %>"
|
62
|
+
end
|
63
|
+
|
64
|
+
# Do whatever you need to do to fetch the underlying data.
|
65
|
+
# Return it as an array of hashes.
|
66
|
+
def fetch_data
|
67
|
+
[
|
68
|
+
{ name: "Bob", shoe_size: 9 },
|
69
|
+
{ name: "Alice", shoe_size: 8 },
|
70
|
+
]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# .gemspec file is added to add plugin details
|
2
|
+
# These specs are used in plugin list and search command
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "inspec-plugin-manager-cli"
|
6
|
+
spec.summary = "CLI plugin for InSpec"
|
7
|
+
spec.description = "This is a CLI plugin for InSpec. It uses the Plugins API v2 to create a
|
8
|
+
series of commands to manage plugins."
|
9
|
+
spec.license = "Apache-2.0"
|
10
|
+
end
|
@@ -41,13 +41,14 @@ module InspecPlugins
|
|
41
41
|
|
42
42
|
unless plugin_statuses.empty?
|
43
43
|
ui.table do |t|
|
44
|
-
t.header = ["Plugin Name", "Version", "Via", "ApiVer"]
|
44
|
+
t.header = ["Plugin Name", "Version", "Via", "ApiVer", "Description"]
|
45
45
|
plugin_statuses.sort_by { |s| s.name.to_s }.each do |status|
|
46
46
|
t << [
|
47
47
|
status.name,
|
48
48
|
make_pretty_version(status),
|
49
49
|
make_pretty_install_type(status),
|
50
50
|
status.api_generation,
|
51
|
+
status.description,
|
51
52
|
]
|
52
53
|
end
|
53
54
|
end
|
@@ -83,14 +84,15 @@ module InspecPlugins
|
|
83
84
|
end
|
84
85
|
|
85
86
|
puts
|
86
|
-
ui.bold(format(" %-30s%-
|
87
|
-
ui.
|
87
|
+
ui.bold(format(" %-30s%-30s%-20s\n", "Plugin Name", "Versions Available", "Description"))
|
88
|
+
ui.line_with_width(100)
|
88
89
|
search_results.keys.sort.each do |plugin_name|
|
89
|
-
versions = options[:all] ? search_results[plugin_name] : [search_results[plugin_name].first]
|
90
|
+
versions = options[:all] ? search_results[plugin_name]["versions"] : [search_results[plugin_name]["versions"].first]
|
90
91
|
versions = "(" + versions.join(", ") + ")"
|
91
|
-
|
92
|
+
description = search_results[plugin_name]["description"]
|
93
|
+
ui.plain_line(format(" %-30s%-30s%-20s", plugin_name, versions, description))
|
92
94
|
end
|
93
|
-
ui.
|
95
|
+
ui.line_with_width(100)
|
94
96
|
ui.plain_line(" #{search_results.count} plugin(s) found")
|
95
97
|
puts
|
96
98
|
|
@@ -381,9 +383,11 @@ module InspecPlugins
|
|
381
383
|
# Do an expensive search to determine the latest version.
|
382
384
|
unless requested_version
|
383
385
|
latest_version = installer.search(plugin_name, exact: true, scope: :latest)
|
384
|
-
|
385
|
-
|
386
|
-
|
386
|
+
if latest_version[plugin_name]
|
387
|
+
latest_version = latest_version[plugin_name]["versions"]&.last
|
388
|
+
if latest_version && !requested_version
|
389
|
+
requested_version = latest_version
|
390
|
+
end
|
387
391
|
end
|
388
392
|
end
|
389
393
|
|
@@ -429,7 +433,7 @@ module InspecPlugins
|
|
429
433
|
if results.empty?
|
430
434
|
ui.red("No such plugin gem #{plugin_name} could be found on " \
|
431
435
|
"#{source_host} - installation failed.\n")
|
432
|
-
elsif options[:version] && !results[plugin_name].include?(options[:version])
|
436
|
+
elsif options[:version] && results[plugin_name] && !results[plugin_name]["versions"].include?(options[:version])
|
433
437
|
ui.red("No such version - #{plugin_name} exists, but no such " \
|
434
438
|
"version #{options[:version]} found on #{source_host} - " \
|
435
439
|
"installation failed.\n")
|
@@ -460,7 +464,7 @@ module InspecPlugins
|
|
460
464
|
|
461
465
|
# Check for latest version (and implicitly, existence)
|
462
466
|
latest_version = installer.search(plugin_name, exact: true, scope: :latest)
|
463
|
-
latest_version = latest_version[plugin_name]&.last
|
467
|
+
latest_version = latest_version[plugin_name] ? latest_version[plugin_name]["versions"]&.last : nil
|
464
468
|
|
465
469
|
if pre_update_versions.include?(latest_version)
|
466
470
|
ui.plain_line("#{ui.bold("Already installed at latest version:", print: false)} " \
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# .gemspec file is added to add plugin details
|
2
|
+
# These specs are used in plugin list and search command
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "inspec-reporter-html2"
|
6
|
+
spec.summary = "Improved HTML reporter plugin"
|
7
|
+
spec.description = "An improved HTML output reporter specifically for Chef InSpec. Unlike the default html reporter, which is RSpec-based, this reporter knows about Chef InSpec structures like Controls and Profiles, and includes full metadata such as control tags, etc."
|
8
|
+
spec.license = "Apache-2.0"
|
9
|
+
end
|
@@ -26,12 +26,14 @@
|
|
26
26
|
|
27
27
|
<div class="inspec-summary">
|
28
28
|
<table id="platform" class="info">
|
29
|
+
<caption>Platform Information</caption>
|
29
30
|
<tr><th colspan=2><h4 id="platform-label">Platform Information</h4></th></tr>
|
30
31
|
<tr class= "name"><th>Name:</th><td><%= run_data.platform.name %></td></tr>
|
31
32
|
<tr class= "release"><th>Release:</th><td><%= run_data.platform.release %></td></tr>
|
32
33
|
<tr class= "target"><th>Target:</th><td><%= run_data.platform.target %></td></tr>
|
33
34
|
</table>
|
34
35
|
<table id="statistics" class="info">
|
36
|
+
<caption>Control Statistics</caption>
|
35
37
|
<tr><th colspan="2"><h4 id="statistics-label">Control Statistics</h4></th></tr>
|
36
38
|
<tr class= "passed"><th>Passed:</th><td><%= run_data.statistics.controls.passed.total %></td></tr>
|
37
39
|
<tr class= "skipped"><th>Skipped:</th><td><%= run_data.statistics.controls.skipped.total %></td></tr>
|
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
<h3 class="control-title">Control <code><%= control.id %></code></h3>
|
28
28
|
<table class="control-metadata info" id="control-metadata-<%= slugged_id %>">
|
29
|
+
<caption>Control Table</caption>
|
29
30
|
<tr class="status status-<%= status %>"><th>Status:</th><td><div><%= status.capitalize %></div></td></tr>
|
30
31
|
<% if control.title %><tr class="title"><th>Title:</th><td><%= control.title %></td></tr> <% end %>
|
31
32
|
<% if control.desc %><tr class="desc"><th>Description:</th><td><%= control.desc %></td></tr> <% end %>
|
@@ -35,6 +36,8 @@
|
|
35
36
|
<th>Tags:</th>
|
36
37
|
<td>
|
37
38
|
<table class="tags">
|
39
|
+
<caption>Tag Table</caption>
|
40
|
+
<tr><th>Tag Name</th><th>Tag Text</th></tr>
|
38
41
|
<% control.tags.each do |tag_name, tag_text| %>
|
39
42
|
<tr><td><%= tag_name %></td><td><%= tag_text %></td></tr>
|
40
43
|
<% end %>
|
@@ -3,6 +3,7 @@
|
|
3
3
|
<h2 class="profile_title">Profile <%= display_name %> (<%= profile.name %>)</h2>
|
4
4
|
|
5
5
|
<table class="profile-metadata info" id="profile-metadata-<%= profile.name %>">
|
6
|
+
<caption>Profile Information Table</caption>
|
6
7
|
<tr class="profile-version"><th>Version:</th><td><%= profile.version %></td></tr>
|
7
8
|
<% if profile.summary %>
|
8
9
|
<tr class="profile-summary"><th>Summary:</th><td><%= profile.summary %></td></tr>
|
@@ -2,6 +2,7 @@
|
|
2
2
|
<div class="result" id="result-<%= slugged_id %>">
|
3
3
|
<h4 class="resource-title">Resource <code><%= result.resource_title.to_s %></code></h4>
|
4
4
|
<table class="result-metadata info">
|
5
|
+
<caption>Result Information Table</caption>
|
5
6
|
<tr class="expectation_message"><th>Test:</th><td><code><%= result.expectation_message %></code></td></tr>
|
6
7
|
<tr class="status status-<%= result.status %>"><th>Status:</th><td><div><%= result.status.capitalize %></div></td></tr>
|
7
8
|
<% if result.status == "failed" %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# .gemspec file is added to add plugin details
|
2
|
+
# These specs are used in plugin list and search command
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "inspec-reporter-json-min"
|
6
|
+
spec.summary = "Json-min json reporter plugin"
|
7
|
+
spec.description = "This plugin provides the `json-min` reporter, which produces test output in JSON format with less detail than the `json` reporter."
|
8
|
+
spec.license = "Apache-2.0"
|
9
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# .gemspec file is added to add plugin details
|
2
|
+
# These specs are used in plugin list and search command
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "inspec-reporter-junit"
|
6
|
+
spec.summary = "JUnit XML reporter plugin"
|
7
|
+
spec.description = "`junit` is the legacy Chef InSpec JUnit reporter, which is retained for backwards compatibility. It generates an XML report in Apache Ant JUnit format. The output format is considered nonstandard in several ways. New users are advised to use `junit2`."
|
8
|
+
spec.license = "Apache-2.0"
|
9
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
# StreamingReporterProgressBar Plugin
|
2
|
+
|
3
|
+
## What This Plugin Does
|
4
|
+
|
5
|
+
This plugin is a streaming reporter plugin which shows the real-time progress of a running InSpec profile using a progress bar. It also outputs the ID of a running control with an indicator showing if the control has passed, failed or skipped.
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# .gemspec file is added to add plugin details
|
2
|
+
# These specs are used in plugin list and search command
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "inspec-streaming-reporter-progress-bar"
|
6
|
+
spec.summary = "Displays a real-time progress bar and control title as output"
|
7
|
+
spec.description = "This plugin is a streaming reporter plugin which shows the real-time progress of a running InSpec profile using a progress bar. It also outputs the ID of a running control with an indicator showing if the control has passed, failed or skipped."
|
8
|
+
spec.license = "Apache-2.0"
|
9
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "inspec-streaming-reporter-progress-bar/version"
|
2
|
+
|
3
|
+
module InspecPlugins
|
4
|
+
module StreamingReporterProgressBar
|
5
|
+
class Plugin < ::Inspec.plugin(2)
|
6
|
+
plugin_name :"inspec-streaming-reporter-progress-bar"
|
7
|
+
streaming_reporter :"progress-bar" do
|
8
|
+
require "inspec-streaming-reporter-progress-bar/streaming_reporter"
|
9
|
+
InspecPlugins::StreamingReporterProgressBar::StreamingReporter
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require "progress_bar"
|
2
|
+
module InspecPlugins::StreamingReporterProgressBar
|
3
|
+
# This class will provide the actual Streaming Reporter implementation.
|
4
|
+
# Its superclass is provided by another call to Inspec.plugin,
|
5
|
+
# this time with two args. The first arg specifies we are requesting
|
6
|
+
# version 2 of the Plugins API. The second says we are making a
|
7
|
+
# Streaming Reporter plugin component, so please make available any DSL needed
|
8
|
+
# for that.
|
9
|
+
|
10
|
+
class StreamingReporter < Inspec.plugin(2, :streaming_reporter)
|
11
|
+
# Registering these methods with RSpec::Core::Formatters class is mandatory
|
12
|
+
RSpec::Core::Formatters.register self, :example_passed, :example_failed, :example_pending
|
13
|
+
|
14
|
+
case RUBY_PLATFORM
|
15
|
+
when /windows|mswin|msys|mingw|cygwin/
|
16
|
+
# Most currently available Windows terminals have poor support
|
17
|
+
# for ANSI extended colors
|
18
|
+
COLORS = {
|
19
|
+
"failed" => "\033[0;1;31m",
|
20
|
+
"passed" => "\033[0;1;32m",
|
21
|
+
"skipped" => "\033[0;37m",
|
22
|
+
"reset" => "\033[0m",
|
23
|
+
}.freeze
|
24
|
+
|
25
|
+
# Most currently available Windows terminals have poor support
|
26
|
+
# for UTF-8 characters so use these boring indicators
|
27
|
+
INDICATORS = {
|
28
|
+
"failed" => "[FAIL]",
|
29
|
+
"skipped" => "[SKIP]",
|
30
|
+
"passed" => "[PASS]",
|
31
|
+
}.freeze
|
32
|
+
else
|
33
|
+
# Extended colors for everyone else
|
34
|
+
COLORS = {
|
35
|
+
"failed" => "\033[38;5;9m",
|
36
|
+
"passed" => "\033[38;5;41m",
|
37
|
+
"skipped" => "\033[38;5;247m",
|
38
|
+
"reset" => "\033[0m",
|
39
|
+
}.freeze
|
40
|
+
|
41
|
+
# Groovy UTF-8 characters for everyone else...
|
42
|
+
# ...even though they probably only work on Mac
|
43
|
+
INDICATORS = {
|
44
|
+
"failed" => "×",
|
45
|
+
"skipped" => "↺",
|
46
|
+
"passed" => "✔",
|
47
|
+
}.freeze
|
48
|
+
end
|
49
|
+
|
50
|
+
def initialize(output)
|
51
|
+
@bar = nil
|
52
|
+
@status_mapping = {}
|
53
|
+
initialize_streaming_reporter
|
54
|
+
end
|
55
|
+
|
56
|
+
def example_passed(notification)
|
57
|
+
control_id = notification.example.metadata[:id]
|
58
|
+
set_status_mapping(control_id, "passed")
|
59
|
+
show_progress(control_id) if control_ended?(control_id)
|
60
|
+
end
|
61
|
+
|
62
|
+
def example_failed(notification)
|
63
|
+
control_id = notification.example.metadata[:id]
|
64
|
+
set_status_mapping(control_id, "failed")
|
65
|
+
show_progress(control_id) if control_ended?(control_id)
|
66
|
+
end
|
67
|
+
|
68
|
+
def example_pending(notification)
|
69
|
+
control_id = notification.example.metadata[:id]
|
70
|
+
set_status_mapping(control_id, "skipped")
|
71
|
+
show_progress(control_id) if control_ended?(control_id)
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def show_progress(control_id)
|
77
|
+
@bar ||= ProgressBar.new(controls_count, :bar, :counter, :percentage)
|
78
|
+
sleep 0.1
|
79
|
+
@bar.increment!
|
80
|
+
@bar.puts format_it(control_id)
|
81
|
+
rescue Exception => ex
|
82
|
+
raise "Exception in Progress Bar streaming reporter: #{ex}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def format_it(control_id)
|
86
|
+
control_status = if @status_mapping[control_id].include? "failed"
|
87
|
+
"failed"
|
88
|
+
elsif @status_mapping[control_id].include? "skipped"
|
89
|
+
"skipped"
|
90
|
+
elsif @status_mapping[control_id].include? "passed"
|
91
|
+
"passed"
|
92
|
+
end
|
93
|
+
|
94
|
+
indicator = INDICATORS[control_status]
|
95
|
+
message_to_format = ""
|
96
|
+
message_to_format += "#{indicator} "
|
97
|
+
message_to_format += control_id.to_s.lstrip.force_encoding(Encoding::UTF_8)
|
98
|
+
format_with_color(control_status, message_to_format)
|
99
|
+
end
|
100
|
+
|
101
|
+
def format_with_color(color_name, text)
|
102
|
+
"#{COLORS[color_name]}#{text}#{COLORS["reset"]}"
|
103
|
+
end
|
104
|
+
|
105
|
+
# status mapping with control id to decide the final state of the control
|
106
|
+
def set_status_mapping(control_id, status)
|
107
|
+
@status_mapping[control_id] = [] if @status_mapping[control_id].nil?
|
108
|
+
@status_mapping[control_id].push(status)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file is known as the "entry point."
|
2
|
+
# This is the file InSpec will try to load if it
|
3
|
+
# thinks your plugin is installed.
|
4
|
+
|
5
|
+
# The *only* thing this file should do is setup the
|
6
|
+
# load path, then load the plugin definition file.
|
7
|
+
|
8
|
+
# Next two lines simply add the path of the gem to the load path.
|
9
|
+
# This is not needed when being loaded as a gem; but when doing
|
10
|
+
# plugin development, you may need it. Either way, it's harmless.
|
11
|
+
libdir = File.dirname(__FILE__)
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
14
|
+
|
15
|
+
require "inspec-streaming-reporter-progress-bar/plugin"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inspec-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.10.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef InSpec Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-telemetry
|
@@ -422,6 +422,8 @@ files:
|
|
422
422
|
- lib/inspec/dependencies/lockfile.rb
|
423
423
|
- lib/inspec/dependencies/requirement.rb
|
424
424
|
- lib/inspec/dependencies/resolver.rb
|
425
|
+
- lib/inspec/dependency_installer.rb
|
426
|
+
- lib/inspec/dependency_loader.rb
|
425
427
|
- lib/inspec/describe_base.rb
|
426
428
|
- lib/inspec/dist.rb
|
427
429
|
- lib/inspec/dsl.rb
|
@@ -509,11 +511,13 @@ files:
|
|
509
511
|
- lib/inspec/resources/cassandra.rb
|
510
512
|
- lib/inspec/resources/cassandradb_conf.rb
|
511
513
|
- lib/inspec/resources/cassandradb_session.rb
|
514
|
+
- lib/inspec/resources/cgroup.rb
|
512
515
|
- lib/inspec/resources/chocolatey_package.rb
|
513
516
|
- lib/inspec/resources/chrony_conf.rb
|
514
517
|
- lib/inspec/resources/command.rb
|
515
518
|
- lib/inspec/resources/cpan.rb
|
516
519
|
- lib/inspec/resources/cran.rb
|
520
|
+
- lib/inspec/resources/cron.rb
|
517
521
|
- lib/inspec/resources/crontab.rb
|
518
522
|
- lib/inspec/resources/csv.rb
|
519
523
|
- lib/inspec/resources/dh_params.rb
|
@@ -551,6 +555,8 @@ files:
|
|
551
555
|
- lib/inspec/resources/interface.rb
|
552
556
|
- lib/inspec/resources/interfaces.rb
|
553
557
|
- lib/inspec/resources/ip6tables.rb
|
558
|
+
- lib/inspec/resources/ipfilter.rb
|
559
|
+
- lib/inspec/resources/ipnat.rb
|
554
560
|
- lib/inspec/resources/iptables.rb
|
555
561
|
- lib/inspec/resources/json.rb
|
556
562
|
- lib/inspec/resources/kernel_module.rb
|
@@ -562,6 +568,7 @@ files:
|
|
562
568
|
- lib/inspec/resources/limits_conf.rb
|
563
569
|
- lib/inspec/resources/linux_kernel_parameter.rb
|
564
570
|
- lib/inspec/resources/login_defs.rb
|
571
|
+
- lib/inspec/resources/lxc.rb
|
565
572
|
- lib/inspec/resources/mongodb.rb
|
566
573
|
- lib/inspec/resources/mongodb_conf.rb
|
567
574
|
- lib/inspec/resources/mongodb_session.rb
|
@@ -670,6 +677,7 @@ files:
|
|
670
677
|
- lib/inspec/utils/command_wrapper.rb
|
671
678
|
- lib/inspec/utils/convert.rb
|
672
679
|
- lib/inspec/utils/database_helpers.rb
|
680
|
+
- lib/inspec/utils/deprecated_cloud_resources_list.rb
|
673
681
|
- lib/inspec/utils/deprecation.rb
|
674
682
|
- lib/inspec/utils/deprecation/config_file.rb
|
675
683
|
- lib/inspec/utils/deprecation/deprecator.rb
|
@@ -702,10 +710,12 @@ files:
|
|
702
710
|
- lib/inspec/version.rb
|
703
711
|
- lib/matchers/matchers.rb
|
704
712
|
- lib/plugins/README.md
|
713
|
+
- lib/plugins/inspec-artifact/inspec-artifact.gemspec
|
705
714
|
- lib/plugins/inspec-artifact/lib/inspec-artifact.rb
|
706
715
|
- lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb
|
707
716
|
- lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb
|
708
717
|
- lib/plugins/inspec-compliance/README.md
|
718
|
+
- lib/plugins/inspec-compliance/inspec-compliance.gemspec
|
709
719
|
- lib/plugins/inspec-compliance/lib/inspec-compliance.rb
|
710
720
|
- lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb
|
711
721
|
- lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb
|
@@ -717,16 +727,19 @@ files:
|
|
717
727
|
- lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb
|
718
728
|
- lib/plugins/inspec-habitat/Berksfile
|
719
729
|
- lib/plugins/inspec-habitat/README.md
|
730
|
+
- lib/plugins/inspec-habitat/inspec-habitat.gemspec
|
720
731
|
- lib/plugins/inspec-habitat/kitchen.yml
|
721
732
|
- lib/plugins/inspec-habitat/lib/inspec-habitat.rb
|
722
733
|
- lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb
|
723
734
|
- lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb
|
724
735
|
- lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb
|
725
736
|
- lib/plugins/inspec-init/README.md
|
737
|
+
- lib/plugins/inspec-init/inspec-init.gemspec
|
726
738
|
- lib/plugins/inspec-init/lib/inspec-init.rb
|
727
739
|
- lib/plugins/inspec-init/lib/inspec-init/cli.rb
|
728
740
|
- lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb
|
729
741
|
- lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
|
742
|
+
- lib/plugins/inspec-init/lib/inspec-init/cli_resource.rb
|
730
743
|
- lib/plugins/inspec-init/lib/inspec-init/renderer.rb
|
731
744
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile
|
732
745
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/LICENSE
|
@@ -737,6 +750,7 @@ files:
|
|
737
750
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.erb
|
738
751
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.erb
|
739
752
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/reporter.erb
|
753
|
+
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/streaming_reporter.erb
|
740
754
|
- lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.erb
|
741
755
|
- lib/plugins/inspec-init/templates/profiles/aws/README.md
|
742
756
|
- lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb
|
@@ -752,11 +766,17 @@ files:
|
|
752
766
|
- lib/plugins/inspec-init/templates/profiles/os/README.md
|
753
767
|
- lib/plugins/inspec-init/templates/profiles/os/controls/example.rb
|
754
768
|
- lib/plugins/inspec-init/templates/profiles/os/inspec.yml
|
769
|
+
- lib/plugins/inspec-init/templates/resources/basic/docs/resource-doc.erb
|
770
|
+
- lib/plugins/inspec-init/templates/resources/basic/libraries/inspec-resource-template.erb
|
771
|
+
- lib/plugins/inspec-init/templates/resources/plural/docs/resource-doc.erb
|
772
|
+
- lib/plugins/inspec-init/templates/resources/plural/libraries/inspec-resource-template.erb
|
755
773
|
- lib/plugins/inspec-plugin-manager-cli/README.md
|
774
|
+
- lib/plugins/inspec-plugin-manager-cli/inspec-plugin-manager-cli.gemspec
|
756
775
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb
|
757
776
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb
|
758
777
|
- lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb
|
759
778
|
- lib/plugins/inspec-reporter-html2/README.md
|
779
|
+
- lib/plugins/inspec-reporter-html2/inspec-reporter-html2.gemspec
|
760
780
|
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2.rb
|
761
781
|
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb
|
762
782
|
- lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/version.rb
|
@@ -768,13 +788,21 @@ files:
|
|
768
788
|
- lib/plugins/inspec-reporter-html2/templates/result.html.erb
|
769
789
|
- lib/plugins/inspec-reporter-html2/templates/selector.html.erb
|
770
790
|
- lib/plugins/inspec-reporter-json-min/README.md
|
791
|
+
- lib/plugins/inspec-reporter-json-min/inspec-reporter-json-min.gemspec
|
771
792
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min.rb
|
772
793
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb
|
773
794
|
- lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/version.rb
|
774
795
|
- lib/plugins/inspec-reporter-junit/README.md
|
796
|
+
- lib/plugins/inspec-reporter-junit/inspec-reporter-junit.gemspec
|
775
797
|
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit.rb
|
776
798
|
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb
|
777
799
|
- lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/version.rb
|
800
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/README.md
|
801
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/inspec-streaming-reporter-progress-bar.gemspec
|
802
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar.rb
|
803
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/plugin.rb
|
804
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/streaming_reporter.rb
|
805
|
+
- lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/version.rb
|
778
806
|
- lib/plugins/shared/core_plugin_test_helper.rb
|
779
807
|
- lib/plugins/things-for-train-integration.rb
|
780
808
|
- lib/source_readers/flat.rb
|
@@ -791,7 +819,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
791
819
|
requirements:
|
792
820
|
- - ">="
|
793
821
|
- !ruby/object:Gem::Version
|
794
|
-
version: '2.
|
822
|
+
version: '2.7'
|
795
823
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
796
824
|
requirements:
|
797
825
|
- - ">="
|