inspec-core 4.19.2 → 4.20.2
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 +4 -4
- data/lib/inspec/base_cli.rb +4 -1
- data/lib/inspec/input_registry.rb +33 -1
- data/lib/inspec/utils/deprecation/config_file.rb +21 -0
- data/lib/inspec/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2395ce22d38edca9eaac2fad00c1fc61f3fb95a154618540d23bc2a1e6ce0fcd
|
4
|
+
data.tar.gz: 4ebdbe5526025408e729b52e0614b43fe89f70b0faae5eeecc8c23db8f0f1ff9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2b21bfbc96b4830edf20f1d48493257845bfbeb52137141269371066c47359092d3ed280cc64e9358b3587d0ddb0c54a643cafd730d57ad2d7ba2331d35b33a
|
7
|
+
data.tar.gz: 84bc11b59621836d20c045efcdee955cc97c605e5902fafaa79c8756dd44f66334731256c6ba4273484d645484f374b1ec2daf471a6dc56805ea819ab2685f38
|
data/lib/inspec/base_cli.rb
CHANGED
@@ -140,7 +140,7 @@ module Inspec
|
|
140
140
|
option :reporter_backtrace_inclusion, type: :boolean,
|
141
141
|
desc: "Include a code backtrace in report data (default: true)"
|
142
142
|
option :input, type: :array, banner: "name1=value1 name2=value2",
|
143
|
-
desc: "Specify one or more inputs directly on the command line, as --input NAME=VALUE"
|
143
|
+
desc: "Specify one or more inputs directly on the command line, as --input NAME=VALUE. Accepts single-quoted YAML and JSON structures."
|
144
144
|
option :input_file, type: :array,
|
145
145
|
desc: "Load one or more input files, a YAML file with values for the profile to use"
|
146
146
|
option :waiver_file, type: :array,
|
@@ -155,6 +155,9 @@ module Inspec
|
|
155
155
|
desc: "Show progress while executing tests."
|
156
156
|
option :distinct_exit, type: :boolean, default: true,
|
157
157
|
desc: "Exit with code 101 if any tests fail, and 100 if any are skipped (default). If disabled, exit 0 on skips and 1 for failures."
|
158
|
+
option :silence_deprecations, type: :array,
|
159
|
+
banner: "[all]|[GROUP GROUP...]",
|
160
|
+
desc: "Suppress deprecation warnings. See install_dir/etc/deprecations.json for list of GROUPs or use 'all'."
|
158
161
|
end
|
159
162
|
|
160
163
|
def self.format_platform_info(params: {}, indent: 0, color: 39)
|
@@ -166,8 +166,9 @@ module Inspec
|
|
166
166
|
end
|
167
167
|
end
|
168
168
|
input_name, input_value = pair.split("=")
|
169
|
+
input_value = parse_cli_input_value(input_name, input_value)
|
169
170
|
evt = Inspec::Input::Event.new(
|
170
|
-
value: input_value
|
171
|
+
value: input_value,
|
171
172
|
provider: :cli,
|
172
173
|
priority: 50
|
173
174
|
)
|
@@ -175,6 +176,37 @@ module Inspec
|
|
175
176
|
end
|
176
177
|
end
|
177
178
|
|
179
|
+
# Remove trailing commas, resolve type.
|
180
|
+
def parse_cli_input_value(input_name, given_value)
|
181
|
+
value = given_value.chomp(",") # Trim trailing comma if any
|
182
|
+
case value
|
183
|
+
when /^true|false$/i
|
184
|
+
value = !!(value =~ /true/i)
|
185
|
+
when /^-?\d+$/
|
186
|
+
value = value.to_i
|
187
|
+
when /^-?\d+\.\d+$/
|
188
|
+
value = value.to_f
|
189
|
+
when /^(\[|\{).*(\]|\})$/
|
190
|
+
# Look for complex values and try to parse them.
|
191
|
+
require "yaml"
|
192
|
+
begin
|
193
|
+
value = YAML.load(value)
|
194
|
+
rescue Psych::SyntaxError => yaml_error
|
195
|
+
# It could be that we just tried to run JSON through the YAML parser.
|
196
|
+
require "json"
|
197
|
+
begin
|
198
|
+
value = JSON.parse(value)
|
199
|
+
rescue JSON::ParserError => json_error
|
200
|
+
msg = "Unparseable value '#{value}' for --input #{input_name}.\n"
|
201
|
+
msg += "When treated as YAML, error: #{yaml_error.message}\n"
|
202
|
+
msg += "When treated as JSON, error: #{json_error.message}"
|
203
|
+
Inspec::Log.warn msg
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
value
|
208
|
+
end
|
209
|
+
|
178
210
|
def bind_inputs_from_runner_api(profile_name, input_hash)
|
179
211
|
# TODO: move this into a core plugin
|
180
212
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "stringio"
|
2
2
|
require "json"
|
3
3
|
require "inspec/globals"
|
4
|
+
require "inspec/config"
|
4
5
|
|
5
6
|
module Inspec
|
6
7
|
module Deprecation
|
@@ -32,6 +33,7 @@ module Inspec
|
|
32
33
|
@groups = {}
|
33
34
|
@unknown_group_action = :warn
|
34
35
|
validate!
|
36
|
+
silence_deprecations_from_cli
|
35
37
|
end
|
36
38
|
|
37
39
|
private
|
@@ -45,6 +47,25 @@ module Inspec
|
|
45
47
|
File.open(default_path)
|
46
48
|
end
|
47
49
|
|
50
|
+
def silence_deprecations_from_cli
|
51
|
+
# Read --silence-deprecations CLI option
|
52
|
+
cfg = Inspec::Config.cached
|
53
|
+
return unless cfg[:silence_deprecations]
|
54
|
+
|
55
|
+
groups_to_silence = cfg[:silence_deprecations]
|
56
|
+
silence_all = groups_to_silence.include?("all")
|
57
|
+
|
58
|
+
groups.each do |group_name, group|
|
59
|
+
# Only silence things that warn. Don't silence things that exit;
|
60
|
+
# those harsher measures are usually protecting removed code and ignoring
|
61
|
+
# and continuing regardless would be perilous and lead to errors.
|
62
|
+
if %i{warn fail_control}.include?(group.action) &&
|
63
|
+
(silence_all || groups_to_silence.include?(group_name.to_s))
|
64
|
+
group.action = :ignore
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
48
69
|
#====================================================================================================#
|
49
70
|
# Validation
|
50
71
|
#====================================================================================================#
|
data/lib/inspec/version.rb
CHANGED
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.
|
4
|
+
version: 4.20.2
|
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: 2020-06-
|
11
|
+
date: 2020-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-telemetry
|