inspec-core 4.3.2 → 4.6.3

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 (285) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +37 -21
  3. data/etc/deprecations.json +10 -0
  4. data/etc/plugin_filters.json +8 -0
  5. data/lib/bundles/inspec-compliance/api.rb +1 -1
  6. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  7. data/lib/bundles/inspec-compliance/http.rb +1 -1
  8. data/lib/bundles/inspec-compliance/support.rb +1 -1
  9. data/lib/bundles/inspec-compliance/target.rb +1 -1
  10. data/lib/bundles/inspec-supermarket.rb +3 -7
  11. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  12. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  13. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  14. data/lib/fetchers/git.rb +14 -15
  15. data/lib/fetchers/local.rb +6 -10
  16. data/lib/fetchers/mock.rb +3 -5
  17. data/lib/fetchers/url.rb +42 -44
  18. data/lib/inspec.rb +23 -24
  19. data/lib/inspec/archive/tar.rb +2 -6
  20. data/lib/inspec/archive/zip.rb +3 -7
  21. data/lib/inspec/backend.rb +8 -9
  22. data/lib/inspec/base_cli.rb +64 -65
  23. data/lib/inspec/cached_fetcher.rb +2 -3
  24. data/lib/inspec/cli.rb +136 -97
  25. data/lib/inspec/config.rb +71 -61
  26. data/lib/inspec/control_eval_context.rb +22 -18
  27. data/lib/inspec/dependencies/cache.rb +2 -3
  28. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  29. data/lib/inspec/dependencies/lockfile.rb +8 -9
  30. data/lib/inspec/dependencies/requirement.rb +7 -8
  31. data/lib/inspec/dependencies/resolver.rb +5 -7
  32. data/lib/inspec/describe.rb +2 -6
  33. data/lib/inspec/dist.rb +20 -0
  34. data/lib/inspec/dsl.rb +4 -7
  35. data/lib/inspec/dsl_shared.rb +1 -2
  36. data/lib/inspec/env_printer.rb +11 -12
  37. data/lib/inspec/errors.rb +0 -4
  38. data/lib/inspec/exceptions.rb +0 -1
  39. data/lib/inspec/expect.rb +5 -8
  40. data/lib/inspec/fetcher.rb +7 -10
  41. data/lib/inspec/file_provider.rb +24 -24
  42. data/lib/inspec/formatters.rb +3 -3
  43. data/lib/inspec/formatters/base.rb +8 -8
  44. data/lib/inspec/globals.rb +2 -2
  45. data/lib/inspec/impact.rb +5 -7
  46. data/lib/inspec/input_registry.rb +84 -33
  47. data/lib/inspec/library_eval_context.rb +3 -6
  48. data/lib/inspec/log.rb +1 -5
  49. data/lib/inspec/metadata.rb +17 -16
  50. data/lib/inspec/method_source.rb +5 -9
  51. data/lib/inspec/objects.rb +10 -12
  52. data/lib/inspec/objects/control.rb +7 -9
  53. data/lib/inspec/objects/describe.rb +9 -11
  54. data/lib/inspec/objects/each_loop.rb +1 -3
  55. data/lib/inspec/objects/input.rb +24 -26
  56. data/lib/inspec/objects/list.rb +4 -6
  57. data/lib/inspec/objects/or_test.rb +2 -4
  58. data/lib/inspec/objects/ruby_helper.rb +3 -5
  59. data/lib/inspec/objects/tag.rb +0 -2
  60. data/lib/inspec/objects/test.rb +9 -11
  61. data/lib/inspec/objects/value.rb +3 -5
  62. data/lib/inspec/plugin/v1.rb +2 -2
  63. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  64. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  65. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  66. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  67. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  68. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  69. data/lib/inspec/plugin/v1/registry.rb +0 -4
  70. data/lib/inspec/plugin/v2.rb +8 -8
  71. data/lib/inspec/plugin/v2/activator.rb +1 -1
  72. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  73. data/lib/inspec/plugin/v2/filter.rb +13 -13
  74. data/lib/inspec/plugin/v2/installer.rb +36 -24
  75. data/lib/inspec/plugin/v2/loader.rb +28 -28
  76. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  77. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  78. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  79. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  80. data/lib/inspec/plugin/v2/registry.rb +7 -7
  81. data/lib/inspec/polyfill.rb +0 -3
  82. data/lib/inspec/profile.rb +55 -63
  83. data/lib/inspec/profile_context.rb +27 -30
  84. data/lib/inspec/profile_vendor.rb +6 -9
  85. data/lib/inspec/reporters.rb +24 -24
  86. data/lib/inspec/reporters/automate.rb +17 -19
  87. data/lib/inspec/reporters/base.rb +1 -1
  88. data/lib/inspec/reporters/cli.rb +88 -91
  89. data/lib/inspec/reporters/json.rb +2 -4
  90. data/lib/inspec/reporters/json_automate.rb +1 -3
  91. data/lib/inspec/reporters/json_min.rb +1 -3
  92. data/lib/inspec/reporters/junit.rb +26 -28
  93. data/lib/inspec/reporters/yaml.rb +1 -3
  94. data/lib/inspec/require_loader.rb +0 -4
  95. data/lib/inspec/resource.rb +4 -125
  96. data/lib/inspec/resources.rb +121 -0
  97. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  98. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  99. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  100. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  101. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  102. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  103. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  104. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  105. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  106. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  107. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  108. data/lib/{resources → inspec/resources}/command.rb +11 -10
  109. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  110. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  111. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  112. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  113. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  114. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  115. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  116. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  117. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  118. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  119. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  120. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  121. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  122. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  123. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  124. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  125. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  126. data/lib/{resources → inspec/resources}/file.rb +80 -79
  127. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  128. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  129. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  130. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  131. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  132. data/lib/{resources → inspec/resources}/host.rb +31 -29
  133. data/lib/{resources → inspec/resources}/http.rb +24 -24
  134. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  135. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  136. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  137. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  138. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  139. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  140. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  141. data/lib/{resources → inspec/resources}/json.rb +8 -10
  142. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  143. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  144. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  145. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  146. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  147. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  148. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  149. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  150. data/lib/inspec/resources/mysql.rb +81 -0
  151. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  152. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  153. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  154. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  155. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  156. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  157. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  158. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  159. data/lib/{resources → inspec/resources}/os.rb +6 -8
  160. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  161. data/lib/{resources → inspec/resources}/package.rb +66 -65
  162. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  163. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  164. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  165. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  166. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  167. data/lib/{resources → inspec/resources}/port.rb +134 -136
  168. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  169. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  170. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  171. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  172. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  173. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  174. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  175. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  176. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  177. data/lib/inspec/resources/script.rb +1 -0
  178. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  179. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  180. data/lib/{resources → inspec/resources}/service.rb +74 -75
  181. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  182. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  183. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  184. data/lib/inspec/resources/sys_info.rb +30 -0
  185. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  186. data/lib/{resources → inspec/resources}/users.rb +65 -65
  187. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  188. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  189. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  190. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  191. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  192. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  193. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  194. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  195. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  196. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  197. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  198. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  199. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  200. data/lib/inspec/rspec_extensions.rb +24 -8
  201. data/lib/inspec/rule.rb +14 -15
  202. data/lib/inspec/runner.rb +28 -28
  203. data/lib/inspec/runner_mock.rb +1 -5
  204. data/lib/inspec/runner_rspec.rb +18 -20
  205. data/lib/inspec/runtime_profile.rb +2 -5
  206. data/lib/inspec/schema.rb +142 -143
  207. data/lib/inspec/secrets.rb +3 -7
  208. data/lib/inspec/secrets/yaml.rb +3 -5
  209. data/lib/inspec/shell.rb +11 -15
  210. data/lib/inspec/shell_detector.rb +6 -7
  211. data/lib/inspec/source_reader.rb +4 -8
  212. data/lib/inspec/ui.rb +33 -39
  213. data/lib/inspec/ui_table_helper.rb +12 -0
  214. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  215. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  216. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  217. data/lib/inspec/utils/deprecation.rb +6 -0
  218. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  219. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  220. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  221. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  222. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  223. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  224. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  225. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  226. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  227. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  228. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  229. data/lib/inspec/utils/json_log.rb +15 -0
  230. data/lib/inspec/utils/latest_version.rb +13 -0
  231. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  232. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  233. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  234. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  235. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  236. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  237. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  238. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  239. data/lib/inspec/utils/telemetry.rb +3 -3
  240. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  241. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  242. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  243. data/lib/inspec/version.rb +1 -1
  244. data/lib/matchers/matchers.rb +22 -25
  245. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  246. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  248. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  249. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  250. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  256. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  257. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  258. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  259. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  260. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  261. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  262. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  263. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  264. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  265. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  266. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  267. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  268. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  269. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  270. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  271. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  272. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  273. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  274. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  275. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  276. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  277. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  278. data/lib/source_readers/flat.rb +6 -10
  279. data/lib/source_readers/inspec.rb +8 -12
  280. metadata +139 -140
  281. data/lib/resources/mysql.rb +0 -82
  282. data/lib/resources/sys_info.rb +0 -28
  283. data/lib/utils/deprecation.rb +0 -6
  284. data/lib/utils/json_log.rb +0 -18
  285. data/lib/utils/latest_version.rb +0 -22
@@ -1,12 +1,8 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require 'openssl'
1
+ require "openssl"
6
2
 
7
3
  module Fetchers
8
4
  class Local < Inspec.fetcher(1)
9
- name 'local'
5
+ name "local"
10
6
  priority 0
11
7
 
12
8
  def self.resolve(target)
@@ -31,11 +27,11 @@ module Fetchers
31
27
 
32
28
  def self.resolve_from_string(target)
33
29
  # Support "urls" in the form of file://
34
- if target.start_with?('file://')
35
- target = target.gsub(%r{^file://}, '')
30
+ if target.start_with?("file://")
31
+ target = target.gsub(%r{^file://}, "")
36
32
  else
37
33
  # support for windows paths
38
- target = target.tr('\\', '/')
34
+ target = target.tr('\\', "/")
39
35
  end
40
36
 
41
37
  target if File.exist?(File.expand_path(target))
@@ -105,7 +101,7 @@ module Fetchers
105
101
  end
106
102
 
107
103
  def perform_shasum(target)
108
- @archive_shasum ||= OpenSSL::Digest::SHA256.digest(File.read(target)).unpack('H*')[0]
104
+ @archive_shasum ||= OpenSSL::Digest::SHA256.digest(File.read(target)).unpack("H*")[0]
109
105
  end
110
106
 
111
107
  def resolved_source
data/lib/fetchers/mock.rb CHANGED
@@ -1,10 +1,8 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
1
+ require "inspec/fetcher"
4
2
 
5
3
  module Fetchers
6
4
  class Mock < Inspec.fetcher(1)
7
- name 'mock'
5
+ name "mock"
8
6
  priority 0
9
7
 
10
8
  def self.resolve(target)
@@ -29,7 +27,7 @@ module Fetchers
29
27
  end
30
28
 
31
29
  def cache_key
32
- ''
30
+ ""
33
31
  end
34
32
  end
35
33
  end
data/lib/fetchers/url.rb CHANGED
@@ -1,22 +1,18 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require 'uri'
6
- require 'openssl'
7
- require 'tempfile'
8
- require 'open-uri'
1
+ require "uri"
2
+ require "openssl"
3
+ require "tempfile"
4
+ require "open-uri"
9
5
 
10
6
  module Fetchers
11
7
  class Url < Inspec.fetcher(1)
12
8
  MIME_TYPES = {
13
- 'application/x-zip-compressed' => '.zip',
14
- 'application/zip' => '.zip',
15
- 'application/x-gzip' => '.tar.gz',
16
- 'application/gzip' => '.tar.gz',
9
+ "application/x-zip-compressed" => ".zip",
10
+ "application/zip" => ".zip",
11
+ "application/x-gzip" => ".tar.gz",
12
+ "application/gzip" => ".tar.gz",
17
13
  }.freeze
18
14
 
19
- name 'url'
15
+ name "url"
20
16
  priority 200
21
17
 
22
18
  def self.resolve(target, opts = {})
@@ -31,7 +27,7 @@ module Fetchers
31
27
 
32
28
  def self.resolve_from_string(target, opts, username = nil, password = nil)
33
29
  uri = URI.parse(target)
34
- return nil if uri.nil? or uri.scheme.nil?
30
+ return nil if uri.nil? || uri.scheme.nil?
35
31
  return nil unless %{ http https }.include? uri.scheme
36
32
  target = transform(target)
37
33
  opts[:username] = username if username
@@ -66,11 +62,11 @@ module Fetchers
66
62
  # https://bitbucket.org/username/repo/commits/95ce1f83d5bbe9eec34c5973f6894617e8d6d8cc is transformed to
67
63
  # https://bitbucket.org/username/repo/get/95ce1f83d5bbe9eec34c5973f6894617e8d6d8cc.tar.gz
68
64
 
69
- GITHUB_URL_REGEX = %r{^https?://(www\.)?github\.com/(?<user>[\w-]+)/(?<repo>[\w-]+)(\.git)?(/)?$}
70
- GITHUB_URL_WITH_TREE_REGEX = %r{^https?://(www\.)?github\.com/(?<user>[\w-]+)/(?<repo>[\w-]+)/tree/(?<commit>[\w\.]+)(/)?$}
71
- BITBUCKET_URL_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)(\.git)?(/)?$}
72
- BITBUCKET_URL_BRANCH_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/branch/(?<branch>[\w\.]+)(/)?$}
73
- BITBUCKET_URL_COMMIT_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/commits/(?<commit>[\w\.]+)(/)?$}
65
+ GITHUB_URL_REGEX = %r{^https?://(www\.)?github\.com/(?<user>[\w-]+)/(?<repo>[\w.-]+?)(\.git)?(/)?$}.freeze
66
+ GITHUB_URL_WITH_TREE_REGEX = %r{^https?://(www\.)?github\.com/(?<user>[\w-]+)/(?<repo>[\w.-]+)/tree/(?<commit>[\w\.]+)(/)?$}.freeze
67
+ BITBUCKET_URL_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)(\.git)?(/)?$}.freeze
68
+ BITBUCKET_URL_BRANCH_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/branch/(?<branch>[\w\.]+)(/)?$}.freeze
69
+ BITBUCKET_URL_COMMIT_REGEX = %r{^https?://(www\.)?bitbucket\.org/(?<user>[\w-]+)/(?<repo>[\w-]+)/commits/(?<commit>[\w\.]+)(/)?$}.freeze
74
70
 
75
71
  def self.transform(target)
76
72
  transformed_target = if m = GITHUB_URL_REGEX.match(target) # rubocop:disable Lint/AssignmentInCondition
@@ -98,8 +94,8 @@ module Fetchers
98
94
  def initialize(url, opts)
99
95
  @target = url.to_s
100
96
  @target_uri = url.is_a?(URI) ? url : parse_uri(url)
101
- @insecure = opts['insecure']
102
- @token = opts['token']
97
+ @insecure = opts["insecure"]
98
+ @token = opts["token"]
103
99
  @config = opts
104
100
  @archive_path = nil
105
101
  @temp_archive_path = nil
@@ -130,23 +126,23 @@ module Fetchers
130
126
 
131
127
  def sha256
132
128
  file = @archive_path || temp_archive_path
133
- OpenSSL::Digest::SHA256.digest(File.read(file)).unpack('H*')[0]
129
+ OpenSSL::Digest::SHA256.digest(File.read(file)).unpack("H*")[0]
134
130
  end
135
131
 
136
132
  def file_type_from_remote(remote)
137
- content_type = remote.meta['content-type']
133
+ content_type = remote.meta["content-type"]
138
134
  file_type = MIME_TYPES[content_type]
139
135
 
140
136
  if file_type.nil?
141
137
  Inspec::Log.warn("Unrecognized content type: #{content_type}. Assuming tar.gz")
142
- file_type = '.tar.gz'
138
+ file_type = ".tar.gz"
143
139
  end
144
140
 
145
141
  file_type
146
142
  end
147
143
 
148
144
  def temp_archive_path
149
- @temp_archive_path ||= if @config['server_type'] == 'automate2'
145
+ @temp_archive_path ||= if @config["server_type"] == "automate2"
150
146
  download_automate2_archive_to_temp
151
147
  else
152
148
  download_archive_to_temp
@@ -158,13 +154,13 @@ module Fetchers
158
154
 
159
155
  Inspec::Log.debug("Fetching URL: #{@target}")
160
156
  json = {
161
- owner: @config['profile'][0],
162
- name: @config['profile'][1],
163
- version: @config['profile'][2],
157
+ owner: @config["profile"][0],
158
+ name: @config["profile"][1],
159
+ version: @config["profile"][2],
164
160
  }.to_json
165
161
 
166
162
  opts = http_opts
167
- opts[:use_ssl] = @target_uri.scheme == 'https'
163
+ opts[:use_ssl] = @target_uri.scheme == "https"
168
164
 
169
165
  if @insecure
170
166
  opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
@@ -177,12 +173,12 @@ module Fetchers
177
173
  req.add_field(key, value)
178
174
  end
179
175
  req.body = json
180
- res = Net::HTTP.start(@target_uri.host, @target_uri.port, opts) { |http|
176
+ res = Net::HTTP.start(@target_uri.host, @target_uri.port, opts) do |http|
181
177
  http.request(req)
182
- }
178
+ end
183
179
 
184
- @archive_type = '.tar.gz'
185
- archive = Tempfile.new(['inspec-dl-', @archive_type])
180
+ @archive_type = ".tar.gz"
181
+ archive = Tempfile.new(["inspec-dl-", @archive_type])
186
182
  archive.binmode
187
183
  archive.write(res.body)
188
184
  archive.rewind
@@ -197,7 +193,7 @@ module Fetchers
197
193
  Inspec::Log.debug("Fetching URL: #{@target}")
198
194
  remote = open_via_uri(@target)
199
195
  @archive_type = file_type_from_remote(remote) # side effect :(
200
- archive = Tempfile.new(['inspec-dl-', @archive_type])
196
+ archive = Tempfile.new(["inspec-dl-", @archive_type])
201
197
  archive.binmode
202
198
  archive.write(remote.read)
203
199
  archive.rewind
@@ -211,7 +207,7 @@ module Fetchers
211
207
 
212
208
  if opts[:http_basic_authentication]
213
209
  # OpenURI does not support userinfo so we need to remove it
214
- open(target.sub("#{@target_uri.userinfo}@", ''), opts)
210
+ open(target.sub("#{@target_uri.userinfo}@", ""), opts)
215
211
  else
216
212
  open(target, opts)
217
213
  end
@@ -231,16 +227,16 @@ module Fetchers
231
227
  opts = {}
232
228
  opts[:ssl_verify_mode] = OpenSSL::SSL::VERIFY_NONE if @insecure
233
229
 
234
- if @config['server_type'] =~ /automate/
235
- opts['chef-delivery-enterprise'] = @config['automate']['ent']
236
- if @config['automate']['token_type'] == 'dctoken'
237
- opts['x-data-collector-token'] = @config['token']
230
+ if @config["server_type"] =~ /automate/
231
+ opts["chef-delivery-enterprise"] = @config["automate"]["ent"]
232
+ if @config["automate"]["token_type"] == "dctoken"
233
+ opts["x-data-collector-token"] = @config["token"]
238
234
  else
239
- opts['chef-delivery-user'] = @config['user']
240
- opts['chef-delivery-token'] = @config['token']
235
+ opts["chef-delivery-user"] = @config["user"]
236
+ opts["chef-delivery-token"] = @config["token"]
241
237
  end
242
238
  elsif @token
243
- opts['Authorization'] = "Bearer #{@token}"
239
+ opts["Authorization"] = "Bearer #{@token}"
244
240
  end
245
241
 
246
242
  username = @config[:username] || @target_uri.user
@@ -264,8 +260,10 @@ module Fetchers
264
260
  true
265
261
  end
266
262
  end
267
- raise 'Unable to fetch profile - the following HTTP headers have no value: ' \
268
- "#{keys_missing_values.join(', ')}" unless keys_missing_values.empty?
263
+ unless keys_missing_values.empty?
264
+ raise "Unable to fetch profile - the following HTTP headers have no value: " \
265
+ "#{keys_missing_values.join(', ')}"
266
+ end
269
267
  end
270
268
  end
271
269
  end
data/lib/inspec.rb CHANGED
@@ -1,32 +1,31 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Dominik Richter
3
- # author: Dominik Richter
4
- # author: Christoph Hartmann
5
2
 
6
3
  libdir = File.dirname(__FILE__)
7
4
  $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
8
5
 
9
- require 'inspec/version'
10
- require 'inspec/exceptions'
11
- require 'utils/deprecation'
12
- require 'inspec/profile'
13
- require 'inspec/rule'
14
- require 'matchers/matchers'
15
- require 'inspec/runner'
16
- require 'inspec/shell'
17
- require 'inspec/formatters'
18
- require 'inspec/reporters'
19
- require 'inspec/input_registry'
20
- require 'inspec/rspec_extensions'
21
- require 'inspec/globals'
22
- require 'inspec/impact'
23
- require 'inspec/utils/telemetry'
6
+ require "inspec/version"
7
+ require "inspec/exceptions"
8
+ require "inspec/utils/deprecation"
9
+ require "inspec/profile"
10
+ require "inspec/rule"
11
+ require "matchers/matchers"
12
+ require "inspec/runner"
13
+ require "inspec/shell"
14
+ require "inspec/formatters"
15
+ require "inspec/reporters"
16
+ require "inspec/input_registry"
17
+ require "inspec/rspec_extensions"
18
+ require "inspec/globals"
19
+ require "inspec/impact"
20
+ require "inspec/utils/telemetry"
21
+ require "inspec/utils/telemetry/global_methods"
24
22
 
25
- require 'inspec/plugin/v2'
26
- require 'inspec/plugin/v1'
23
+ require "inspec/plugin/v2"
24
+ require "inspec/plugin/v1"
27
25
 
28
26
  # all utils that may be required by legacy plugins
29
- require 'inspec/base_cli'
30
- require 'inspec/fetcher'
31
- require 'inspec/source_reader'
32
- require 'inspec/resource'
27
+ require "inspec/base_cli"
28
+ require "inspec/fetcher"
29
+ require "inspec/source_reader"
30
+ require "inspec/resource"
31
+ require "inspec/resources"
@@ -1,13 +1,9 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'rubygems/package'
1
+ require "rubygems/package"
6
2
 
7
3
  module Inspec::Archive
8
4
  class TarArchiveGenerator
9
5
  def archive(base_dir, files, archive)
10
- File.open(archive, 'wb') do |file|
6
+ File.open(archive, "wb") do |file|
11
7
  Zlib::GzipWriter.wrap(file) do |gz|
12
8
  Gem::Package::TarWriter.new(gz) do |tar|
13
9
  files.each do |input_filename|
@@ -1,10 +1,6 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'rubygems'
6
- require 'zip'
7
- require 'pathname'
1
+ require "rubygems"
2
+ require "zip"
3
+ require "pathname"
8
4
 
9
5
  module Inspec::Archive
10
6
  class ZipArchiveGenerator
@@ -1,10 +1,9 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Dominik Richter
3
- # author: Dominik Richter
4
- # author: Christoph Hartmann
5
2
 
6
- require 'train'
7
- require 'inspec/config'
3
+ require "train"
4
+ require "inspec/config"
5
+ require "inspec/version"
6
+ require "inspec/resource"
8
7
 
9
8
  module Inspec
10
9
  module Backend
@@ -28,7 +27,7 @@ module Inspec
28
27
 
29
28
  # Ruby internal for printing a nice name for this class
30
29
  def to_s
31
- 'Inspec::Backend::Class'
30
+ "Inspec::Backend::Class"
32
31
  end
33
32
 
34
33
  # Ruby internal for pretty-printing a summary for this class
@@ -57,15 +56,15 @@ module Inspec
57
56
  # Set caching settings. We always want to enable caching for
58
57
  # the Mock transport for testing.
59
58
  if config[:backend_cache] || config[:backend] == :mock
60
- Inspec::Log.debug 'Option backend_cache is enabled'
59
+ Inspec::Log.debug "Option backend_cache is enabled"
61
60
  connection.enable_cache(:file)
62
61
  connection.enable_cache(:command)
63
62
  elsif config[:debug_shell]
64
- Inspec::Log.debug 'Option backend_cache is disabled'
63
+ Inspec::Log.debug "Option backend_cache is disabled"
65
64
  connection.disable_cache(:file)
66
65
  connection.disable_cache(:command)
67
66
  else
68
- Inspec::Log.debug 'Option backend_cache is disabled'
67
+ Inspec::Log.debug "Option backend_cache is disabled"
69
68
  connection.disable_cache(:file)
70
69
  connection.disable_cache(:command)
71
70
  end
@@ -1,11 +1,8 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'thor'
6
- require 'inspec/log'
7
- require 'inspec/profile_vendor'
8
- require 'inspec/ui'
1
+ require "thor"
2
+ require "inspec/log"
3
+ require "inspec/ui"
4
+ require "inspec/config"
5
+ require "inspec/utils/deprecation/global_method"
9
6
 
10
7
  # Allow end of options during array type parsing
11
8
  # https://github.com/erikhuda/thor/issues/631
@@ -34,107 +31,107 @@ module Inspec
34
31
 
35
32
  def self.target_options # rubocop:disable MethodLength
36
33
  option :target, aliases: :t, type: :string,
37
- desc: 'Simple targeting option using URIs, e.g. ssh://user:pass@host:port'
34
+ desc: "Simple targeting option using URIs, e.g. ssh://user:pass@host:port"
38
35
  option :backend, aliases: :b, type: :string,
39
- desc: 'Choose a backend: local, ssh, winrm, docker.'
36
+ desc: "Choose a backend: local, ssh, winrm, docker."
40
37
  option :host, type: :string,
41
- desc: 'Specify a remote host which is tested.'
38
+ desc: "Specify a remote host which is tested."
42
39
  option :port, aliases: :p, type: :numeric,
43
- desc: 'Specify the login port for a remote scan.'
40
+ desc: "Specify the login port for a remote scan."
44
41
  option :user, type: :string,
45
- desc: 'The login user for a remote scan.'
42
+ desc: "The login user for a remote scan."
46
43
  option :password, type: :string, lazy_default: -1,
47
- desc: 'Login password for a remote scan, if required.'
44
+ desc: "Login password for a remote scan, if required."
48
45
  option :enable_password, type: :string, lazy_default: -1,
49
- desc: 'Password for enable mode on Cisco IOS devices.'
46
+ desc: "Password for enable mode on Cisco IOS devices."
50
47
  option :key_files, aliases: :i, type: :array,
51
- desc: 'Login key or certificate file for a remote scan.'
48
+ desc: "Login key or certificate file for a remote scan."
52
49
  option :path, type: :string,
53
- desc: 'Login path to use when connecting to the target (WinRM).'
50
+ desc: "Login path to use when connecting to the target (WinRM)."
54
51
  option :sudo, type: :boolean,
55
- desc: 'Run scans with sudo. Only activates on Unix and non-root user.'
52
+ desc: "Run scans with sudo. Only activates on Unix and non-root user."
56
53
  option :sudo_password, type: :string, lazy_default: -1,
57
- desc: 'Specify a sudo password, if it is required.'
54
+ desc: "Specify a sudo password, if it is required."
58
55
  option :sudo_options, type: :string,
59
- desc: 'Additional sudo options for a remote scan.'
56
+ desc: "Additional sudo options for a remote scan."
60
57
  option :sudo_command, type: :string,
61
- desc: 'Alternate command for sudo.'
58
+ desc: "Alternate command for sudo."
62
59
  option :shell, type: :boolean,
63
- desc: 'Run scans in a subshell. Only activates on Unix.'
60
+ desc: "Run scans in a subshell. Only activates on Unix."
64
61
  option :shell_options, type: :string,
65
- desc: 'Additional shell options.'
62
+ desc: "Additional shell options."
66
63
  option :shell_command, type: :string,
67
- desc: 'Specify a particular shell to use.'
64
+ desc: "Specify a particular shell to use."
68
65
  option :ssl, type: :boolean,
69
- desc: 'Use SSL for transport layer encryption (WinRM).'
66
+ desc: "Use SSL for transport layer encryption (WinRM)."
70
67
  option :self_signed, type: :boolean,
71
- desc: 'Allow remote scans with self-signed certificates (WinRM).'
72
- option :winrm_transport, type: :string, default: 'negotiate',
73
- desc: 'Specify which transport to use, defaults to negotiate (WinRM).'
68
+ desc: "Allow remote scans with self-signed certificates (WinRM)."
69
+ option :winrm_transport, type: :string, default: "negotiate",
70
+ desc: "Specify which transport to use, defaults to negotiate (WinRM)."
74
71
  option :winrm_disable_sspi, type: :boolean,
75
- desc: 'Whether to use disable sspi authentication, defaults to false (WinRM).'
72
+ desc: "Whether to use disable sspi authentication, defaults to false (WinRM)."
76
73
  option :winrm_basic_auth, type: :boolean,
77
- desc: 'Whether to use basic authentication, defaults to false (WinRM).'
74
+ desc: "Whether to use basic authentication, defaults to false (WinRM)."
78
75
  option :config, type: :string,
79
- desc: 'Read configuration from JSON file (`-` reads from stdin).'
76
+ desc: "Read configuration from JSON file (`-` reads from stdin)."
80
77
  option :json_config, type: :string, hide: true
81
78
  option :proxy_command, type: :string,
82
- desc: 'Specifies the command to use to connect to the server'
79
+ desc: "Specifies the command to use to connect to the server"
83
80
  option :bastion_host, type: :string,
84
- desc: 'Specifies the bastion host if applicable'
81
+ desc: "Specifies the bastion host if applicable"
85
82
  option :bastion_user, type: :string,
86
- desc: 'Specifies the bastion user if applicable'
83
+ desc: "Specifies the bastion user if applicable"
87
84
  option :bastion_port, type: :string,
88
- desc: 'Specifies the bastion port if applicable'
85
+ desc: "Specifies the bastion port if applicable"
89
86
  option :insecure, type: :boolean, default: false,
90
- desc: 'Disable SSL verification on select targets'
87
+ desc: "Disable SSL verification on select targets"
91
88
  option :target_id, type: :string,
92
- desc: 'Provide a ID which will be included on reports'
89
+ desc: "Provide a ID which will be included on reports"
93
90
  end
94
91
 
95
92
  def self.profile_options
96
93
  option :profiles_path, type: :string,
97
- desc: 'Folder which contains referenced profiles.'
94
+ desc: "Folder which contains referenced profiles."
98
95
  option :vendor_cache, type: :string,
99
- desc: 'Use the given path for caching dependencies. (default: ~/.inspec/cache)'
96
+ desc: "Use the given path for caching dependencies. (default: ~/.inspec/cache)"
100
97
  end
101
98
 
102
99
  def self.exec_options
103
100
  target_options
104
101
  profile_options
105
102
  option :controls, type: :array,
106
- desc: 'A list of control names to run, or a list of /regexes/ to match against control names. Ignore all other tests.'
103
+ desc: "A list of control names to run, or a list of /regexes/ to match against control names. Ignore all other tests."
107
104
  option :reporter, type: :array,
108
- banner: 'one two:/output/file/path',
109
- desc: 'Enable one or more output reporters: cli, documentation, html, progress, json, json-min, json-rspec, junit, yaml'
105
+ banner: "one two:/output/file/path",
106
+ desc: "Enable one or more output reporters: cli, documentation, html, progress, json, json-min, json-rspec, junit, yaml"
110
107
  option :input_file, type: :array,
111
- desc: 'Load one or more input files, a YAML file with values for the profile to use'
108
+ desc: "Load one or more input files, a YAML file with values for the profile to use"
112
109
  option :attrs, type: :array,
113
- desc: 'Legacy name for --input-file - deprecated.'
110
+ desc: "Legacy name for --input-file - deprecated."
114
111
  option :create_lockfile, type: :boolean,
115
- desc: 'Write out a lockfile based on this execution (unless one already exists)'
112
+ desc: "Write out a lockfile based on this execution (unless one already exists)"
116
113
  option :backend_cache, type: :boolean,
117
- desc: 'Allow caching for backend command output. (default: true)'
114
+ desc: "Allow caching for backend command output. (default: true)"
118
115
  option :show_progress, type: :boolean,
119
- desc: 'Show progress while executing tests.'
116
+ desc: "Show progress while executing tests."
120
117
  option :distinct_exit, type: :boolean, default: true,
121
- 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.'
118
+ 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."
122
119
  end
123
120
 
124
121
  def self.format_platform_info(params: {}, indent: 0, color: 39)
125
- str = ''
126
- params.each { |item, info|
122
+ str = ""
123
+ params.each do |item, info|
127
124
  data = info
128
125
 
129
126
  # Format Array for better output if applicable
130
- data = data.join(', ') if data.is_a?(Array)
127
+ data = data.join(", ") if data.is_a?(Array)
131
128
 
132
129
  # Do not output fields of data is missing ('unknown' is fine)
133
130
  next if data.nil?
134
131
 
135
132
  data = "\e[1m\e[#{color}m#{data}\e[0m"
136
- str << format("#{' ' * indent}%-10s %s\n", item.to_s.capitalize + ':', data)
137
- }
133
+ str << format("#{' ' * indent}%-10s %s\n", item.to_s.capitalize + ":", data)
134
+ end
138
135
  str
139
136
  end
140
137
 
@@ -193,12 +190,12 @@ module Inspec
193
190
  private
194
191
 
195
192
  def suppress_log_output?(opts)
196
- return false if opts['reporter'].nil?
197
- match = %w{json json-min json-rspec json-automate junit html yaml documentation progress} & opts['reporter'].keys
193
+ return false if opts["reporter"].nil?
194
+ match = %w{json json-min json-rspec json-automate junit html yaml documentation progress} & opts["reporter"].keys
198
195
  unless match.empty?
199
196
  match.each do |m|
200
197
  # check to see if we are outputting to stdout
201
- return true if opts['reporter'][m]['stdout'] == true
198
+ return true if opts["reporter"][m]["stdout"] == true
202
199
  end
203
200
  end
204
201
  false
@@ -220,7 +217,7 @@ module Inspec
220
217
  if valid.include?(level)
221
218
  l = level
222
219
  else
223
- l = 'info'
220
+ l = "info"
224
221
  end
225
222
 
226
223
  Logger.const_get(l.upcase)
@@ -237,11 +234,13 @@ module Inspec
237
234
  end
238
235
 
239
236
  def vendor_deps(path, opts)
237
+ require "inspec/profile_vendor"
238
+
240
239
  profile_path = path || Dir.pwd
241
240
  profile_vendor = Inspec::ProfileVendor.new(profile_path)
242
241
 
243
242
  if (profile_vendor.cache_path.exist? || profile_vendor.lockfile.exist?) && !opts[:overwrite]
244
- puts 'Profile is already vendored. Use --overwrite.'
243
+ puts "Profile is already vendored. Use --overwrite."
245
244
  return false
246
245
  end
247
246
 
@@ -257,23 +256,23 @@ module Inspec
257
256
  # logging singleton Inspec::Log. Eventually it would be nice to
258
257
  # move internal debug logging to use this logging singleton.
259
258
  #
260
- loc = if o['log_location']
261
- o['log_location']
259
+ loc = if o["log_location"]
260
+ o["log_location"]
262
261
  elsif suppress_log_output?(o)
263
- STDERR
262
+ $stderr
264
263
  else
265
- STDOUT
264
+ $stdout
266
265
  end
267
266
 
268
267
  Inspec::Log.init(loc)
269
- Inspec::Log.level = get_log_level(o['log_level'])
268
+ Inspec::Log.level = get_log_level(o["log_level"])
270
269
 
271
270
  o[:logger] = Logger.new(loc)
272
271
  # output json if we have activated the json formatter
273
- if o['log-format'] == 'json'
272
+ if o["log-format"] == "json"
274
273
  o[:logger].formatter = Logger::JSONFormatter.new
275
274
  end
276
- o[:logger].level = get_log_level(o['log_level'])
275
+ o[:logger].level = get_log_level(o["log_level"])
277
276
  end
278
277
  end
279
278
  end