inspec-core 4.23.11 → 4.24.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +17 -35
  3. data/inspec-core.gemspec +8 -9
  4. data/lib/bundles/inspec-supermarket/api.rb +2 -2
  5. data/lib/bundles/inspec-supermarket/target.rb +1 -1
  6. data/lib/inspec/archive/tar.rb +1 -1
  7. data/lib/inspec/archive/zip.rb +3 -3
  8. data/lib/inspec/base_cli.rb +2 -2
  9. data/lib/inspec/cached_fetcher.rb +1 -1
  10. data/lib/inspec/cli.rb +1 -1
  11. data/lib/inspec/config.rb +5 -5
  12. data/lib/inspec/dependencies/cache.rb +1 -1
  13. data/lib/inspec/env_printer.rb +2 -2
  14. data/lib/inspec/fetcher/git.rb +3 -3
  15. data/lib/inspec/fetcher/local.rb +1 -1
  16. data/lib/inspec/fetcher/url.rb +4 -4
  17. data/lib/inspec/file_provider.rb +4 -4
  18. data/lib/inspec/formatters/base.rb +16 -0
  19. data/lib/inspec/globals.rb +8 -2
  20. data/lib/inspec/input.rb +3 -0
  21. data/lib/inspec/input_registry.rb +5 -3
  22. data/lib/inspec/metadata.rb +1 -1
  23. data/lib/inspec/plugin/v1/plugins.rb +2 -2
  24. data/lib/inspec/plugin/v2.rb +5 -0
  25. data/lib/inspec/plugin/v2/config_file.rb +1 -1
  26. data/lib/inspec/plugin/v2/filter.rb +2 -2
  27. data/lib/inspec/plugin/v2/installer.rb +5 -5
  28. data/lib/inspec/plugin/v2/loader.rb +6 -1
  29. data/lib/inspec/plugin/v2/registry.rb +2 -2
  30. data/lib/inspec/profile.rb +3 -3
  31. data/lib/inspec/profile_context.rb +1 -1
  32. data/lib/inspec/reporters/automate.rb +2 -2
  33. data/lib/inspec/reporters/json.rb +3 -1
  34. data/lib/inspec/reporters/json_automate.rb +1 -1
  35. data/lib/inspec/resource.rb +2 -0
  36. data/lib/inspec/resources.rb +5 -5
  37. data/lib/inspec/resources/apt.rb +1 -1
  38. data/lib/inspec/resources/auditd.rb +1 -1
  39. data/lib/inspec/resources/csv.rb +1 -1
  40. data/lib/inspec/resources/dh_params.rb +1 -1
  41. data/lib/inspec/resources/file.rb +1 -1
  42. data/lib/inspec/resources/grub_conf.rb +2 -1
  43. data/lib/inspec/resources/http.rb +1 -1
  44. data/lib/inspec/resources/iis_website.rb +1 -1
  45. data/lib/inspec/resources/interfaces.rb +1 -1
  46. data/lib/inspec/resources/json.rb +2 -2
  47. data/lib/inspec/resources/key_rsa.rb +1 -1
  48. data/lib/inspec/resources/mssql_session.rb +5 -1
  49. data/lib/inspec/resources/mysql_session.rb +1 -1
  50. data/lib/inspec/resources/nginx.rb +1 -1
  51. data/lib/inspec/resources/nginx_conf.rb +1 -1
  52. data/lib/inspec/resources/npm.rb +1 -1
  53. data/lib/inspec/resources/oracledb_session.rb +1 -1
  54. data/lib/inspec/resources/package.rb +1 -1
  55. data/lib/inspec/resources/parse_config.rb +5 -2
  56. data/lib/inspec/resources/platform.rb +11 -1
  57. data/lib/inspec/resources/port.rb +1 -1
  58. data/lib/inspec/resources/postgres_session.rb +1 -1
  59. data/lib/inspec/resources/ppa.rb +1 -1
  60. data/lib/inspec/resources/processes.rb +1 -1
  61. data/lib/inspec/resources/rabbitmq_conf.rb +1 -1
  62. data/lib/inspec/resources/registry_key.rb +1 -1
  63. data/lib/inspec/resources/sshd_config.rb +1 -1
  64. data/lib/inspec/resources/ssl.rb +2 -2
  65. data/lib/inspec/resources/toml.rb +1 -1
  66. data/lib/inspec/resources/vbscript.rb +1 -1
  67. data/lib/inspec/resources/windows_registry_key.rb +1 -1
  68. data/lib/inspec/resources/wmi.rb +16 -8
  69. data/lib/inspec/resources/x509_certificate.rb +1 -1
  70. data/lib/inspec/resources/xml.rb +1 -1
  71. data/lib/inspec/rule.rb +8 -8
  72. data/lib/inspec/run_data.rb +1 -1
  73. data/lib/inspec/run_data/result.rb +2 -0
  74. data/lib/inspec/runner.rb +2 -2
  75. data/lib/inspec/schema.rb +3 -1
  76. data/lib/inspec/schema/output_schema.rb +1 -1
  77. data/lib/inspec/schema/primitives.rb +1 -1
  78. data/lib/inspec/shell_detector.rb +2 -2
  79. data/lib/inspec/utils/command_wrapper.rb +1 -1
  80. data/lib/inspec/utils/deprecation/config_file.rb +2 -2
  81. data/lib/inspec/utils/json_log.rb +1 -1
  82. data/lib/inspec/utils/run_data_filters.rb +7 -5
  83. data/lib/inspec/utils/telemetry/collector.rb +1 -1
  84. data/lib/inspec/utils/telemetry/data_series.rb +1 -1
  85. data/lib/inspec/version.rb +1 -1
  86. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +5 -5
  87. data/lib/plugins/inspec-compliance/README.md +1 -1
  88. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +3 -3
  89. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +2 -2
  90. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +2 -2
  91. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +3 -3
  92. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +1 -1
  93. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +1 -1
  94. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +2 -2
  95. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +3 -3
  96. data/lib/plugins/inspec-reporter-html2/lib/inspec-reporter-html2/reporter.rb +1 -1
  97. data/lib/plugins/inspec-reporter-json-min/lib/inspec-reporter-json-min/reporter.rb +1 -1
  98. data/lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb +1 -1
  99. data/lib/plugins/shared/core_plugin_test_helper.rb +6 -6
  100. metadata +41 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a065b3ed549e1beaaa211fc87e50e1f66be56a12c51c942884972d70a55fe6c
4
- data.tar.gz: bef9a2f8e84aea96c3917119906bdd251468e4a54a69044f1122c0fbb1b340fe
3
+ metadata.gz: 35c6838714e546c28371a2e919c989c01eb8b15cfb7b6bd334bfa49530261e7c
4
+ data.tar.gz: eb20cc6d19e454489b3bb48e46ab2ec3738578f35a755c9fb4ed6dc475cb1cd6
5
5
  SHA512:
6
- metadata.gz: d985c4562718e2bbd57585f6c6b496970aeaca0aabb0d2101b5b89b22c465d99c5ce5fead723bf4478799331d9a6d3be8d9fcd1786434ebd47bdf4392af19b6e
7
- data.tar.gz: bd144e5f250215c64aad78f41ad60804fefe093b7cf234aa09b0ace4c866b5d254ac7ce639405ff33af743f08a4376f1a41cb2f61c2faa0b5ffab4221add290a
6
+ metadata.gz: 2ed69ce7800644c8bf4fa48cb2ec1b5612735c9dacc33a2d94a10e867471a2d81e85f38fd8bd71831b3711d68beec781f582ab7f297f960cba0d494dfe943160
7
+ data.tar.gz: bc9e4299ae63e74c417080922e481433ff68ae272e44ee3050d1e1cd920a27152db8f3b7f029965fbd462ba624cb2ce202774aec91ca6c85631e99ce9f12eebd
data/Gemfile CHANGED
@@ -9,7 +9,12 @@ gem "inspec", path: "."
9
9
  # in it in order to package the executable. Hence the odd backwards dependency.
10
10
  gem "inspec-bin", path: "./inspec-bin"
11
11
 
12
- gem "ffi", ">= 1.9.14", "!= 1.13.0"
12
+ gem "ffi", ">= 1.9.14", "!= 1.13.0", "!= 1.14.2"
13
+
14
+ if Gem.ruby_version.to_s.start_with?("2.5")
15
+ # 16.7.23 required ruby 2.6+
16
+ gem "chef-utils", "< 16.7.23" # TODO: remove when we drop ruby 2.5
17
+ end
13
18
 
14
19
  group :omnibus do
15
20
  gem "rb-readline"
@@ -19,46 +24,23 @@ group :omnibus do
19
24
  end
20
25
 
21
26
  group :test do
22
- gem "chefstyle", "~> 1.2.1"
23
- gem "minitest", "~> 5.5"
24
- gem "minitest-sprint", "~> 1.0"
25
- gem "rake", ">= 10"
26
- gem "simplecov", ["~> 0.10", "<=0.18.2"]
27
+ gem "chefstyle", "~> 1.5.7"
27
28
  gem "concurrent-ruby", "~> 1.0"
28
- gem "nokogiri", "~> 1.9"
29
+ gem "html-proofer", platforms: :ruby # do not attempt to run proofer on windows
30
+ gem "json_schemer", ">= 0.2.1", "< 0.2.12"
31
+ gem "m"
32
+ gem "minitest-sprint", "~> 1.0"
33
+ gem "minitest", "~> 5.5"
29
34
  gem "mocha", "~> 1.1"
35
+ gem "nokogiri", "~> 1.9"
36
+ gem "pry-byebug"
37
+ gem "pry", "~> 0.10"
38
+ gem "rake", ">= 10"
30
39
  gem "ruby-progressbar", "~> 1.8"
40
+ gem "simplecov", "~> 0.18"
31
41
  gem "webmock", "~> 3.0"
32
- gem "m"
33
- gem "pry", "~> 0.10"
34
- gem "pry-byebug"
35
- gem "html-proofer", platforms: :ruby # do not attempt to run proofer on windows
36
- end
37
-
38
- group :integration do
39
- gem "berkshelf"
40
- gem "test-kitchen"
41
- gem "kitchen-vagrant"
42
- gem "chef", "< 15"
43
- gem "chef-zero", "< 15"
44
- gem "kitchen-inspec"
45
- gem "kitchen-ec2"
46
- gem "kitchen-dokken"
47
- gem "git"
48
- end
49
-
50
- # gems for Maintainers.md generation
51
- group :maintenance do
52
- gem "tomlrb"
53
-
54
- # To sync maintainers with github
55
- gem "octokit"
56
- gem "netrc"
57
42
  end
58
43
 
59
44
  group :deploy do
60
45
  gem "inquirer"
61
46
  end
62
-
63
- # add these additional dependencies into Gemfile.local
64
- eval_gemfile(__FILE__ + ".local") if File.exist?(__FILE__ + ".local")
@@ -1,4 +1,4 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "inspec/version"
4
4
 
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.license = "Apache-2.0"
14
14
  spec.require_paths = ["lib"]
15
15
 
16
- spec.required_ruby_version = "~> 2.4"
16
+ spec.required_ruby_version = ">= 2.5"
17
17
 
18
18
  # the gemfile and gemspec are necessary for appbundler so don't remove it
19
19
  spec.files =
@@ -26,22 +26,21 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "chef-telemetry", "~> 1.0"
27
27
  spec.add_dependency "license-acceptance", ">= 0.2.13", "< 3.0"
28
28
  spec.add_dependency "thor", ">= 0.20", "< 2.0"
29
- spec.add_dependency "json_schemer", ">= 0.2.1", "< 0.2.12"
30
29
  spec.add_dependency "method_source", ">= 0.8", "< 2.0"
31
- spec.add_dependency "rubyzip", "~> 1.2", ">= 1.2.2"
32
- spec.add_dependency "rspec", "~> 3.9"
30
+ spec.add_dependency "rubyzip", ">= 1.2.2", "< 3.0"
31
+ spec.add_dependency "rspec", "~> 3.10"
33
32
  spec.add_dependency "rspec-its", "~> 1.2"
34
33
  spec.add_dependency "pry", "~> 0.13"
35
- spec.add_dependency "hashie", "~> 3.4"
34
+ spec.add_dependency "hashie", ">= 3.4", "< 5.0"
36
35
  spec.add_dependency "mixlib-log", "~> 3.0"
37
36
  spec.add_dependency "sslshake", "~> 1.2"
38
37
  spec.add_dependency "parallel", "~> 1.9"
39
- spec.add_dependency "faraday", ">= 0.9.0", "< 1.1"
38
+ spec.add_dependency "faraday", ">= 0.9.0", "< 1.4"
40
39
  spec.add_dependency "tty-table", "~> 0.10"
41
40
  spec.add_dependency "tty-prompt", "~> 0.17"
42
- spec.add_dependency "tomlrb", "~> 1.2.0"
41
+ spec.add_dependency "tomlrb", ">= 1.2", "< 2.1"
43
42
  spec.add_dependency "addressable", "~> 2.4"
44
- spec.add_dependency "parslet", "~> 1.5"
43
+ spec.add_dependency "parslet", ">= 1.5", "< 3.0"
45
44
  spec.add_dependency "semverse", "~> 3.0"
46
45
  spec.add_dependency "multipart-post", "~> 2.0"
47
46
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "net/http"
4
- require "addressable/uri"
3
+ require "net/http" unless defined?(Net::HTTP)
4
+ require "addressable/uri" unless defined?(Addressable::URI)
5
5
 
6
6
  module Supermarket
7
7
  class API
@@ -1,4 +1,4 @@
1
- require "uri"
1
+ require "uri" unless defined?(URI)
2
2
  require "inspec/fetcher"
3
3
  require "inspec/fetcher/url"
4
4
 
@@ -1,4 +1,4 @@
1
- require "rubygems/package"
1
+ require "rubygems/package" unless defined?(Gem::Package)
2
2
 
3
3
  module Inspec::Archive
4
4
  class TarArchiveGenerator
@@ -1,6 +1,6 @@
1
- require "rubygems"
2
- require "zip"
3
- require "pathname"
1
+ require "rubygems" unless defined?(Gem)
2
+ require "zip" unless defined?(Zip)
3
+ require "pathname" unless defined?(Pathname)
4
4
 
5
5
  module Inspec::Archive
6
6
  class ZipArchiveGenerator
@@ -1,4 +1,4 @@
1
- require "thor"
1
+ require "thor" unless defined?(Thor)
2
2
  require "inspec/log"
3
3
  require "inspec/ui"
4
4
  require "inspec/config"
@@ -136,7 +136,7 @@ module Inspec
136
136
  banner: "one two:/output/file/path",
137
137
  desc: "Enable one or more output reporters: cli, documentation, html, progress, json, json-min, json-rspec, junit, yaml"
138
138
  option :reporter_message_truncation, type: :string,
139
- desc: "Number of characters to truncate failure messages in report data to (default: no truncation)"
139
+ desc: "Number of characters to truncate failure messages and code_desc in report data to (default: no truncation)"
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",
@@ -1,5 +1,5 @@
1
1
  require "inspec/fetcher"
2
- require "forwardable"
2
+ require "forwardable" unless defined?(Forwardable)
3
3
 
4
4
  module Inspec
5
5
  class CachedFetcher
@@ -67,7 +67,7 @@ class Inspec::InspecCLI < Inspec::BaseCLI
67
67
  desc: "A list of controls to include. Ignore all other tests."
68
68
  profile_options
69
69
  def json(target)
70
- require "json"
70
+ require "json" unless defined?(JSON)
71
71
 
72
72
  o = config
73
73
  diagnose(o)
@@ -1,11 +1,11 @@
1
1
  # Represents InSpec configuration. Merges defaults, config file options,
2
2
  # and CLI arguments.
3
3
 
4
- require "pp"
5
- require "stringio"
6
- require "forwardable"
7
- require "thor"
8
- require "base64"
4
+ require "pp" unless defined?(PP)
5
+ require "stringio" unless defined?(StringIO)
6
+ require "forwardable" unless defined?(Forwardable)
7
+ require "thor" unless defined?(Thor)
8
+ require "base64" unless defined?(Base64)
9
9
  require "inspec/plugin/v2/filter"
10
10
 
11
11
  module Inspec
@@ -1,4 +1,4 @@
1
- require "fileutils"
1
+ require "fileutils" unless defined?(FileUtils)
2
2
 
3
3
  module Inspec
4
4
  #
@@ -1,6 +1,6 @@
1
1
  require "inspec/shell_detector"
2
- require "erb"
3
- require "shellwords"
2
+ require "erb" unless defined?(Erb)
3
+ require "shellwords" unless defined?(Shellwords)
4
4
 
5
5
  module Inspec
6
6
  class EnvPrinter
@@ -1,6 +1,6 @@
1
- require "tmpdir"
2
- require "fileutils"
3
- require "mixlib/shellout"
1
+ require "tmpdir" unless defined?(Dir.mktmpdir)
2
+ require "fileutils" unless defined?(FileUtils)
3
+ require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
4
4
  require "inspec/log"
5
5
 
6
6
  module Inspec::Fetcher
@@ -1,4 +1,4 @@
1
- require "openssl"
1
+ require "openssl" unless defined?(OpenSSL)
2
2
 
3
3
  module Inspec::Fetcher
4
4
  class Local < Inspec.fetcher(1)
@@ -1,7 +1,7 @@
1
- require "uri"
2
- require "openssl"
3
- require "tempfile"
4
- require "open-uri"
1
+ require "uri" unless defined?(URI)
2
+ require "openssl" unless defined?(OpenSSL)
3
+ require "tempfile" unless defined?(Tempfile)
4
+ require "open-uri" unless defined?(OpenURI)
5
5
 
6
6
  module Inspec::Fetcher
7
7
  class Url < Inspec.fetcher(1)
@@ -1,7 +1,7 @@
1
- require "rubygems/package"
2
- require "pathname"
3
- require "zlib"
4
- require "zip"
1
+ require "rubygems/package" unless defined?(Gem::Package)
2
+ require "pathname" unless defined?(Pathname)
3
+ require "zlib" unless defined?(Zlib)
4
+ require "zip" unless defined?(Zip)
5
5
 
6
6
  module Inspec
7
7
  class FileProvider
@@ -159,6 +159,14 @@ module Inspec::Formatters
159
159
  resource_title: example.metadata[:described_class] || example.metadata[:example_group][:description],
160
160
  expectation_message: format_expectation_message(example),
161
161
  waiver_data: example.metadata[:waiver_data],
162
+ # This enforces the resource name as expected based off of the class
163
+ # name. However, if we wanted the `name` attribute against the class
164
+ # to be canonical for this case (consider edge cases!) we would use
165
+ # example.metadata[:described_class].instance_variable_get(:@__resource_name__)&.to_s
166
+ resource_class: example.metadata[:described_class].class.superclass.name,
167
+ # This is a raw grep of the text passed to the resource in any format,
168
+ # and is used to enforce near-uniqueness against the resource.
169
+ resource_params: find_resource_params(example.metadata[:described_class]),
162
170
  }
163
171
 
164
172
  unless (pid = example.metadata[:profile_id]).nil?
@@ -174,6 +182,14 @@ module Inspec::Formatters
174
182
  res
175
183
  end
176
184
 
185
+ def find_resource_params(example)
186
+ if example.class.ancestors.include?(Inspec::Resource)
187
+ example.instance_variable_get(:@resource_params)
188
+ else
189
+ []
190
+ end
191
+ end
192
+
177
193
  def format_expectation_message(example)
178
194
  if (example.metadata[:example_group][:description_args].first == example.metadata[:example_group][:described_class]) ||
179
195
  example.metadata[:example_group][:described_class].nil?
@@ -1,15 +1,21 @@
1
1
  require_relative "utils/install_context"
2
2
 
3
3
  module Inspec
4
-
5
4
  extend Inspec::InstallContextHelpers
6
5
 
7
6
  def self.config_dir
8
- ENV["INSPEC_CONFIG_DIR"] ? ENV["INSPEC_CONFIG_DIR"] : File.join(Dir.home, ".inspec")
7
+ ENV["INSPEC_CONFIG_DIR"] || File.join(home_path, ".inspec")
9
8
  end
10
9
 
11
10
  def self.src_root
12
11
  @src_root ||= File.expand_path(File.join(__FILE__, "../../.."))
13
12
  end
14
13
 
14
+ def self.home_path
15
+ Dir.home
16
+ rescue ArgumentError, NoMethodError
17
+ # If ENV['HOME'] is not set, Dir.home will fail due to expanding the ~. Fallback to Etc.
18
+ require "etc" unless defined?(Etc)
19
+ Etc.getpwuid.dir
20
+ end
15
21
  end
@@ -14,14 +14,17 @@ module Inspec
14
14
  class Input
15
15
 
16
16
  class Error < Inspec::Error; end
17
+
17
18
  class ValidationError < Error
18
19
  attr_accessor :input_name
19
20
  attr_accessor :input_value
20
21
  attr_accessor :input_type
21
22
  end
23
+
22
24
  class TypeError < Error
23
25
  attr_accessor :input_type
24
26
  end
27
+
25
28
  class RequiredError < Error
26
29
  attr_accessor :input_name
27
30
  end
@@ -1,5 +1,5 @@
1
- require "forwardable"
2
- require "singleton"
1
+ require "forwardable" unless defined?(Forwardable)
2
+ require "singleton" unless defined?(Singleton)
3
3
  require "inspec/input"
4
4
  require "inspec/secrets"
5
5
  require "inspec/exceptions"
@@ -14,9 +14,11 @@ module Inspec
14
14
  extend Forwardable
15
15
 
16
16
  class Error < Inspec::Error; end
17
+
17
18
  class ProfileLookupError < Error
18
19
  attr_accessor :profile_name
19
20
  end
21
+
20
22
  class InputLookupError < Error
21
23
  attr_accessor :profile_name
22
24
  attr_accessor :input_name
@@ -199,7 +201,7 @@ module Inspec
199
201
  value = YAML.load(value)
200
202
  rescue Psych::SyntaxError => yaml_error
201
203
  # It could be that we just tried to run JSON through the YAML parser.
202
- require "json"
204
+ require "json" unless defined?(JSON)
203
205
  begin
204
206
  value = JSON.parse(value)
205
207
  rescue JSON::ParserError => json_error
@@ -216,7 +216,7 @@ module Inspec
216
216
  end
217
217
 
218
218
  def self.from_yaml(ref, content, profile_id, logger = nil)
219
- require "erb"
219
+ require "erb" unless defined?(Erb)
220
220
  res = Metadata.new(ref, logger)
221
221
  res.params = YAML.load(ERB.new(content).result)
222
222
  res.content = content
@@ -1,4 +1,4 @@
1
- require "forwardable"
1
+ require "forwardable" unless defined?(Forwardable)
2
2
 
3
3
  module Inspec
4
4
  # Resource Plugins
@@ -36,7 +36,7 @@ module Inspec
36
36
  .flatten
37
37
 
38
38
  # load bundled plugins
39
- bundled_dir = File.expand_path(File.dirname(__FILE__))
39
+ bundled_dir = __dir__
40
40
  @paths += Dir[File.join(bundled_dir, "..", "bundles", "inspec-*.rb")].flatten
41
41
 
42
42
  # map paths to names
@@ -6,17 +6,22 @@ module Inspec
6
6
  class Exception < Inspec::Error; end
7
7
  class ConfigError < Inspec::Plugin::V2::Exception; end
8
8
  class LoadError < Inspec::Plugin::V2::Exception; end
9
+
9
10
  class GemActionError < Inspec::Plugin::V2::Exception
10
11
  attr_accessor :plugin_name
11
12
  attr_accessor :version
12
13
  end
14
+
13
15
  class InstallError < Inspec::Plugin::V2::GemActionError; end
16
+
14
17
  class PluginExcludedError < Inspec::Plugin::V2::InstallError
15
18
  attr_accessor :details
16
19
  end
20
+
17
21
  class UpdateError < Inspec::Plugin::V2::GemActionError
18
22
  attr_accessor :from_version, :to_version
19
23
  end
24
+
20
25
  class UnInstallError < Inspec::Plugin::V2::GemActionError; end
21
26
  class SearchError < Inspec::Plugin::V2::GemActionError; end
22
27
  end
@@ -1,4 +1,4 @@
1
- require "json"
1
+ require "json" unless defined?(JSON)
2
2
 
3
3
  module Inspec::Plugin::V2
4
4
  # Represents the plugin config file on disk.
@@ -1,5 +1,5 @@
1
- require "singleton"
2
- require "json"
1
+ require "singleton" unless defined?(Singleton)
2
+ require "json" unless defined?(JSON)
3
3
  require "inspec/globals"
4
4
 
5
5
  module Inspec::Plugin; end
@@ -1,12 +1,12 @@
1
1
  # This file is not required by default.
2
2
 
3
- require "singleton"
4
- require "forwardable"
5
- require "fileutils"
6
- require "uri"
3
+ require "singleton" unless defined?(Singleton)
4
+ require "forwardable" unless defined?(Forwardable)
5
+ require "fileutils" unless defined?(FileUtils)
6
+ require "uri" unless defined?(URI)
7
7
 
8
8
  # Gem extensions for doing unusual things - not loaded by Gem default
9
- require "rubygems/package"
9
+ require "rubygems/package" unless defined?(Gem::Package)
10
10
  require "rubygems/name_tuple"
11
11
  require "rubygems/uninstaller"
12
12
  require "rubygems/remote_fetcher"