inspec-core 5.23.6 → 6.6.0

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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/Chef-EULA +9 -0
  3. data/Gemfile +25 -41
  4. data/etc/features.sig +6 -0
  5. data/etc/features.yaml +94 -0
  6. data/inspec-core.gemspec +20 -18
  7. data/lib/inspec/backend.rb +2 -0
  8. data/lib/inspec/base_cli.rb +80 -14
  9. data/lib/inspec/cached_fetcher.rb +24 -3
  10. data/lib/inspec/cli.rb +292 -235
  11. data/lib/inspec/config.rb +24 -11
  12. data/lib/inspec/dependencies/cache.rb +33 -0
  13. data/lib/inspec/dependencies/dependency_set.rb +2 -2
  14. data/lib/inspec/dsl.rb +1 -1
  15. data/lib/inspec/enhanced_outcomes.rb +1 -0
  16. data/lib/inspec/errors.rb +5 -0
  17. data/lib/inspec/exceptions.rb +1 -0
  18. data/lib/inspec/feature/config.rb +75 -0
  19. data/lib/inspec/feature/runner.rb +26 -0
  20. data/lib/inspec/feature.rb +34 -0
  21. data/lib/inspec/fetcher/git.rb +6 -21
  22. data/lib/inspec/fetcher/url.rb +7 -29
  23. data/lib/inspec/globals.rb +6 -0
  24. data/lib/inspec/input_registry.rb +1 -5
  25. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +7 -0
  26. data/lib/inspec/plugin/v2/plugin_types/streaming_reporter.rb +30 -2
  27. data/lib/inspec/profile.rb +49 -13
  28. data/lib/inspec/reporters/cli.rb +1 -1
  29. data/lib/inspec/reporters.rb +67 -54
  30. data/lib/inspec/resources/audit_policy.rb +2 -8
  31. data/lib/inspec/resources/groups.rb +0 -52
  32. data/lib/inspec/resources/nftables.rb +1 -14
  33. data/lib/inspec/resources/oracledb_session.rb +3 -9
  34. data/lib/inspec/resources/postgres_session.rb +5 -9
  35. data/lib/inspec/resources/sybase_session.rb +2 -11
  36. data/lib/inspec/resources/virtualization.rb +1 -1
  37. data/lib/inspec/rule.rb +9 -14
  38. data/lib/inspec/run_data.rb +7 -5
  39. data/lib/inspec/runner.rb +35 -6
  40. data/lib/inspec/runner_rspec.rb +12 -9
  41. data/lib/inspec/secrets/yaml.rb +5 -1
  42. data/lib/inspec/shell.rb +10 -0
  43. data/lib/inspec/ui.rb +4 -0
  44. data/lib/inspec/utils/licensing_config.rb +9 -0
  45. data/lib/inspec/utils/profile_ast_helpers.rb +2 -1
  46. data/lib/inspec/utils/waivers/csv_file_reader.rb +1 -1
  47. data/lib/inspec/utils/waivers/excel_file_reader.rb +1 -1
  48. data/lib/inspec/version.rb +1 -1
  49. data/lib/inspec/waiver_file_reader.rb +18 -35
  50. data/lib/inspec.rb +2 -1
  51. data/lib/matchers/matchers.rb +3 -3
  52. data/lib/plugins/inspec-compliance/README.md +1 -11
  53. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +189 -170
  54. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +10 -3
  55. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -0
  56. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +23 -21
  57. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +15 -13
  58. data/lib/plugins/inspec-init/lib/inspec-init/cli_resource.rb +15 -13
  59. data/lib/plugins/inspec-license/README.md +16 -0
  60. data/lib/plugins/inspec-license/inspec-license.gemspec +6 -0
  61. data/lib/plugins/inspec-license/lib/inspec-license/cli.rb +26 -0
  62. data/lib/plugins/inspec-license/lib/inspec-license.rb +14 -0
  63. data/lib/plugins/inspec-parallel/README.md +27 -0
  64. data/lib/plugins/inspec-parallel/inspec-parallel.gemspec +6 -0
  65. data/lib/plugins/inspec-parallel/lib/inspec-parallel/child_status_reporter.rb +61 -0
  66. data/lib/plugins/inspec-parallel/lib/inspec-parallel/cli.rb +39 -0
  67. data/lib/plugins/inspec-parallel/lib/inspec-parallel/command.rb +219 -0
  68. data/lib/plugins/inspec-parallel/lib/inspec-parallel/runner.rb +265 -0
  69. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/base.rb +24 -0
  70. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/silent.rb +7 -0
  71. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/status.rb +124 -0
  72. data/lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/text.rb +23 -0
  73. data/lib/plugins/inspec-parallel/lib/inspec-parallel/validator.rb +170 -0
  74. data/lib/plugins/inspec-parallel/lib/inspec-parallel.rb +18 -0
  75. data/lib/plugins/inspec-sign/lib/inspec-sign/base.rb +10 -11
  76. data/lib/plugins/inspec-sign/lib/inspec-sign/cli.rb +11 -4
  77. data/lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar/streaming_reporter.rb +6 -13
  78. data/lib/source_readers/inspec.rb +1 -1
  79. metadata +51 -43
@@ -1,5 +1,6 @@
1
1
  require_relative "base"
2
2
  require "inspec/dist"
3
+ require "inspec/feature"
3
4
 
4
5
  #
5
6
  # Notes:
@@ -85,8 +86,10 @@ module InspecPlugins
85
86
  option :keydir, type: :string, default: "./",
86
87
  desc: "Directory to search for keys"
87
88
  def generate_keys
88
- puts "Generating keys"
89
- InspecPlugins::Sign::Base.keygen(options)
89
+ Inspec.with_feature("inspec-cli-sign-generate-keys") {
90
+ puts "Generating keys"
91
+ InspecPlugins::Sign::Base.keygen(options)
92
+ }
90
93
  end
91
94
 
92
95
  desc "profile PATH", "sign the profile in PATH and generate .iaf artifact."
@@ -95,12 +98,16 @@ module InspecPlugins
95
98
  option :profile_content_id, type: :string,
96
99
  desc: "UUID of the profile. This will write the profile_content_id in the metadata file if it does not already exist in the metadata file."
97
100
  def profile(profile_path)
98
- InspecPlugins::Sign::Base.profile_sign(profile_path, options)
101
+ Inspec.with_feature("inspec-cli-sign-profile") {
102
+ InspecPlugins::Sign::Base.profile_sign(profile_path, options)
103
+ }
99
104
  end
100
105
 
101
106
  desc "verify PATH", "Verify a signed profile .iaf artifact at given path."
102
107
  def verify(signed_profile_path)
103
- InspecPlugins::Sign::Base.profile_verify(signed_profile_path)
108
+ Inspec.with_feature("inspec-cli-sign-verify") {
109
+ InspecPlugins::Sign::Base.profile_verify(signed_profile_path)
110
+ }
104
111
  end
105
112
  end
106
113
  end
@@ -91,23 +91,20 @@ module InspecPlugins::StreamingReporterProgressBar
91
91
 
92
92
  set_status_mapping(control_id, status)
93
93
  collect_notifications(notification, control_id, status)
94
- control_ended = control_ended?(control_id)
95
- if control_ended
96
- control_outcome = add_enhanced_outcomes(control_id) if enhanced_outcomes
97
- show_progress(control_id, title, full_description, control_outcome)
98
- end
94
+ show_progress(control_id, title, full_description) if control_ended?(notification, control_id)
99
95
  end
100
96
 
101
- def show_progress(control_id, title, full_description, control_outcome)
97
+ def show_progress(control_id, title, full_description)
102
98
  @bar ||= ProgressBar.new(controls_count, :bar, :counter, :percentage)
103
99
  sleep 0.1
104
100
  @bar.increment!
105
- @bar.puts format_it(control_id, title, full_description, control_outcome)
101
+ @bar.puts format_it(control_id, title, full_description)
106
102
  rescue StandardError => e
107
103
  raise "Exception in Progress Bar streaming reporter: #{e}"
108
104
  end
109
105
 
110
- def format_it(control_id, title, full_description, control_outcome)
106
+ def format_it(control_id, title, full_description)
107
+ control_outcome = control_outcome(control_id)
111
108
  if control_outcome
112
109
  control_status = control_outcome
113
110
  else
@@ -121,11 +118,7 @@ module InspecPlugins::StreamingReporterProgressBar
121
118
  end
122
119
  end
123
120
  indicator = INDICATORS[control_status]
124
- message_to_format = ""
125
- message_to_format += "#{indicator} "
126
- message_to_format += "#{control_id.to_s.strip.dup.force_encoding(Encoding::UTF_8)} "
127
- message_to_format += "#{title.gsub(/\n*\s+/, " ").to_s.force_encoding(Encoding::UTF_8)} " if title
128
- message_to_format += "#{full_description.gsub(/\n*\s+/, " ").to_s.force_encoding(Encoding::UTF_8)} " unless title
121
+ message_to_format = format_message(indicator, control_id, title, full_description)
129
122
  format_with_color(control_status, message_to_format)
130
123
  rescue Exception => e
131
124
  raise "Exception in show_progress: #{e}"
@@ -66,7 +66,7 @@ module SourceReaders
66
66
  end
67
67
 
68
68
  def load_readme
69
- load_all(/README(\.md)?$/)
69
+ load_all(/README.md/)
70
70
  end
71
71
  end
72
72
  end
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: 5.23.6
4
+ version: 6.6.0
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: 2025-09-23 00:00:00.000000000 Z
11
+ date: 2023-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-telemetry
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '0.20'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.5.0
62
+ version: 1.3.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '0.20'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 1.5.0
72
+ version: 1.3.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: method_source
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: 1.2.2
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: '4.0'
102
+ version: '3.0'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 1.2.2
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '4.0'
112
+ version: '3.0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rspec
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ dependencies:
119
119
  version: '3.9'
120
120
  - - "<="
121
121
  - !ruby/object:Gem::Version
122
- version: '3.14'
122
+ version: '3.12'
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
@@ -129,27 +129,21 @@ dependencies:
129
129
  version: '3.9'
130
130
  - - "<="
131
131
  - !ruby/object:Gem::Version
132
- version: '3.14'
132
+ version: '3.12'
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: rspec-its
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: '1.2'
140
- - - "<"
141
- - !ruby/object:Gem::Version
142
- version: '3.0'
143
140
  type: :runtime
144
141
  prerelease: false
145
142
  version_requirements: !ruby/object:Gem::Requirement
146
143
  requirements:
147
- - - ">="
144
+ - - "~>"
148
145
  - !ruby/object:Gem::Version
149
146
  version: '1.2'
150
- - - "<"
151
- - !ruby/object:Gem::Version
152
- version: '3.0'
153
147
  - !ruby/object:Gem::Dependency
154
148
  name: pry
155
149
  requirement: !ruby/object:Gem::Requirement
@@ -191,9 +185,6 @@ dependencies:
191
185
  - - "~>"
192
186
  - !ruby/object:Gem::Version
193
187
  version: '3.0'
194
- - - "<"
195
- - !ruby/object:Gem::Version
196
- version: '3.2'
197
188
  type: :runtime
198
189
  prerelease: false
199
190
  version_requirements: !ruby/object:Gem::Requirement
@@ -201,9 +192,6 @@ dependencies:
201
192
  - - "~>"
202
193
  - !ruby/object:Gem::Version
203
194
  version: '3.0'
204
- - - "<"
205
- - !ruby/object:Gem::Version
206
- version: '3.2'
207
195
  - !ruby/object:Gem::Dependency
208
196
  name: sslshake
209
197
  requirement: !ruby/object:Gem::Requirement
@@ -337,7 +325,7 @@ dependencies:
337
325
  version: '1.5'
338
326
  - - "<"
339
327
  - !ruby/object:Gem::Version
340
- version: '3.0'
328
+ version: '2.0'
341
329
  type: :runtime
342
330
  prerelease: false
343
331
  version_requirements: !ruby/object:Gem::Requirement
@@ -347,7 +335,7 @@ dependencies:
347
335
  version: '1.5'
348
336
  - - "<"
349
337
  - !ruby/object:Gem::Version
350
- version: '3.0'
338
+ version: '2.0'
351
339
  - !ruby/object:Gem::Dependency
352
340
  name: semverse
353
341
  requirement: !ruby/object:Gem::Requirement
@@ -377,53 +365,53 @@ dependencies:
377
365
  - !ruby/object:Gem::Version
378
366
  version: '2.0'
379
367
  - !ruby/object:Gem::Dependency
380
- name: cookstyle
368
+ name: train-core
381
369
  requirement: !ruby/object:Gem::Requirement
382
370
  requirements:
383
371
  - - ">="
384
372
  - !ruby/object:Gem::Version
385
- version: '0'
373
+ version: 3.11.0
386
374
  type: :runtime
387
375
  prerelease: false
388
376
  version_requirements: !ruby/object:Gem::Requirement
389
377
  requirements:
390
378
  - - ">="
391
379
  - !ruby/object:Gem::Version
392
- version: '0'
380
+ version: 3.11.0
393
381
  - !ruby/object:Gem::Dependency
394
- name: train-core
382
+ name: chef-licensing
395
383
  requirement: !ruby/object:Gem::Requirement
396
384
  requirements:
397
- - - "~>"
398
- - !ruby/object:Gem::Version
399
- version: '3.13'
400
385
  - - ">="
401
386
  - !ruby/object:Gem::Version
402
- version: 3.13.4
387
+ version: 0.7.5
403
388
  type: :runtime
404
389
  prerelease: false
405
390
  version_requirements: !ruby/object:Gem::Requirement
406
391
  requirements:
407
- - - "~>"
408
- - !ruby/object:Gem::Version
409
- version: '3.13'
410
392
  - - ">="
411
393
  - !ruby/object:Gem::Version
412
- version: 3.13.4
413
- description: InSpec provides a framework for creating end-to-end infrastructure tests.
414
- You can use it for integration or even compliance testing. Create fully portable
415
- test profiles and use them in your workflow to ensure stability and security. Integrate
416
- InSpec in your change lifecycle for local testing, CI/CD, and deployment verification.
394
+ version: 0.7.5
395
+ description: |+
396
+ InSpec provides a framework for creating end-to-end infrastructure tests. You can use it for integration or even compliance testing. Create fully portable test profiles and use them in your workflow to ensure stability and security. Integrate InSpec in your change lifecycle for local testing, CI/CD, and deployment verification.
417
397
  This has local support only. See the `inspec` gem for full support.
398
+
399
+ Packaged distributions of Progress® Chef® products obtained from RubyGems are made available pursuant to the Progress Chef EULA at https://www.chef.io/end-user-license-agreement, unless there is an executed agreement in effect between you and Progress that covers the Progress Chef products ("Master Agreement"), in which case the Master Agreement shall govern.
400
+
401
+ Source code obtained from the Chef GitHub repository is made available under Apache-2.0, a copy of which is included.
402
+
418
403
  email:
419
404
  - inspec@chef.io
420
405
  executables: []
421
406
  extensions: []
422
407
  extra_rdoc_files: []
423
408
  files:
409
+ - Chef-EULA
424
410
  - Gemfile
425
411
  - LICENSE
426
412
  - etc/deprecations.json
413
+ - etc/features.sig
414
+ - etc/features.yaml
427
415
  - etc/keys/progress-2022-05-04.pem.pub
428
416
  - etc/plugin_filters.json
429
417
  - inspec-core.gemspec
@@ -466,6 +454,9 @@ files:
466
454
  - lib/inspec/errors.rb
467
455
  - lib/inspec/exceptions.rb
468
456
  - lib/inspec/expect.rb
457
+ - lib/inspec/feature.rb
458
+ - lib/inspec/feature/config.rb
459
+ - lib/inspec/feature/runner.rb
469
460
  - lib/inspec/fetcher.rb
470
461
  - lib/inspec/fetcher/git.rb
471
462
  - lib/inspec/fetcher/local.rb
@@ -742,6 +733,7 @@ files:
742
733
  - lib/inspec/utils/install_context.rb
743
734
  - lib/inspec/utils/json_log.rb
744
735
  - lib/inspec/utils/json_profile_summary.rb
736
+ - lib/inspec/utils/licensing_config.rb
745
737
  - lib/inspec/utils/modulator.rb
746
738
  - lib/inspec/utils/nginx_parser.rb
747
739
  - lib/inspec/utils/object_traversal.rb
@@ -826,6 +818,22 @@ files:
826
818
  - lib/plugins/inspec-init/templates/resources/basic/libraries/inspec-resource-template.erb
827
819
  - lib/plugins/inspec-init/templates/resources/plural/docs/resource-doc.erb
828
820
  - lib/plugins/inspec-init/templates/resources/plural/libraries/inspec-resource-template.erb
821
+ - lib/plugins/inspec-license/README.md
822
+ - lib/plugins/inspec-license/inspec-license.gemspec
823
+ - lib/plugins/inspec-license/lib/inspec-license.rb
824
+ - lib/plugins/inspec-license/lib/inspec-license/cli.rb
825
+ - lib/plugins/inspec-parallel/README.md
826
+ - lib/plugins/inspec-parallel/inspec-parallel.gemspec
827
+ - lib/plugins/inspec-parallel/lib/inspec-parallel.rb
828
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/child_status_reporter.rb
829
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/cli.rb
830
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/command.rb
831
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/runner.rb
832
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/base.rb
833
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/silent.rb
834
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/status.rb
835
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/super_reporter/text.rb
836
+ - lib/plugins/inspec-parallel/lib/inspec-parallel/validator.rb
829
837
  - lib/plugins/inspec-plugin-manager-cli/README.md
830
838
  - lib/plugins/inspec-plugin-manager-cli/inspec-plugin-manager-cli.gemspec
831
839
  - lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb
@@ -869,7 +877,7 @@ files:
869
877
  - lib/source_readers/inspec.rb
870
878
  homepage: https://github.com/inspec/inspec
871
879
  licenses:
872
- - Apache-2.0
880
+ - LicenseRef-Chef-EULA
873
881
  metadata: {}
874
882
  post_install_message:
875
883
  rdoc_options: []
@@ -879,14 +887,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
879
887
  requirements:
880
888
  - - ">="
881
889
  - !ruby/object:Gem::Version
882
- version: 3.1.0
890
+ version: '2.7'
883
891
  required_rubygems_version: !ruby/object:Gem::Requirement
884
892
  requirements:
885
893
  - - ">="
886
894
  - !ruby/object:Gem::Version
887
895
  version: '0'
888
896
  requirements: []
889
- rubygems_version: 3.3.27
897
+ rubygems_version: 3.1.4
890
898
  signing_key:
891
899
  specification_version: 4
892
900
  summary: Infrastructure and compliance testing. Core library.