inspec 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 (368) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +36 -38
  3. data/README.md +37 -21
  4. data/etc/deprecations.json +10 -0
  5. data/etc/plugin_filters.json +8 -0
  6. data/inspec.gemspec +38 -39
  7. data/lib/bundles/inspec-compliance/api.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  9. data/lib/bundles/inspec-compliance/http.rb +1 -1
  10. data/lib/bundles/inspec-compliance/support.rb +1 -1
  11. data/lib/bundles/inspec-compliance/target.rb +1 -1
  12. data/lib/bundles/inspec-supermarket.rb +3 -7
  13. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  14. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  15. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  16. data/lib/fetchers/git.rb +14 -15
  17. data/lib/fetchers/local.rb +6 -10
  18. data/lib/fetchers/mock.rb +3 -5
  19. data/lib/fetchers/url.rb +42 -44
  20. data/lib/inspec.rb +23 -24
  21. data/lib/inspec/archive/tar.rb +2 -6
  22. data/lib/inspec/archive/zip.rb +3 -7
  23. data/lib/inspec/backend.rb +8 -9
  24. data/lib/inspec/base_cli.rb +64 -65
  25. data/lib/inspec/cached_fetcher.rb +2 -3
  26. data/lib/inspec/cli.rb +136 -97
  27. data/lib/inspec/config.rb +71 -61
  28. data/lib/inspec/control_eval_context.rb +22 -18
  29. data/lib/inspec/dependencies/cache.rb +2 -3
  30. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  31. data/lib/inspec/dependencies/lockfile.rb +8 -9
  32. data/lib/inspec/dependencies/requirement.rb +7 -8
  33. data/lib/inspec/dependencies/resolver.rb +5 -7
  34. data/lib/inspec/describe.rb +2 -6
  35. data/lib/inspec/dist.rb +20 -0
  36. data/lib/inspec/dsl.rb +4 -7
  37. data/lib/inspec/dsl_shared.rb +1 -2
  38. data/lib/inspec/env_printer.rb +11 -12
  39. data/lib/inspec/errors.rb +0 -4
  40. data/lib/inspec/exceptions.rb +0 -1
  41. data/lib/inspec/expect.rb +5 -8
  42. data/lib/inspec/fetcher.rb +7 -10
  43. data/lib/inspec/file_provider.rb +24 -24
  44. data/lib/inspec/formatters.rb +3 -3
  45. data/lib/inspec/formatters/base.rb +8 -8
  46. data/lib/inspec/globals.rb +2 -2
  47. data/lib/inspec/impact.rb +5 -7
  48. data/lib/inspec/input_registry.rb +84 -33
  49. data/lib/inspec/library_eval_context.rb +3 -6
  50. data/lib/inspec/log.rb +1 -5
  51. data/lib/inspec/metadata.rb +17 -16
  52. data/lib/inspec/method_source.rb +5 -9
  53. data/lib/inspec/objects.rb +10 -12
  54. data/lib/inspec/objects/control.rb +7 -9
  55. data/lib/inspec/objects/describe.rb +9 -11
  56. data/lib/inspec/objects/each_loop.rb +1 -3
  57. data/lib/inspec/objects/input.rb +24 -26
  58. data/lib/inspec/objects/list.rb +4 -6
  59. data/lib/inspec/objects/or_test.rb +2 -4
  60. data/lib/inspec/objects/ruby_helper.rb +3 -5
  61. data/lib/inspec/objects/tag.rb +0 -2
  62. data/lib/inspec/objects/test.rb +9 -11
  63. data/lib/inspec/objects/value.rb +3 -5
  64. data/lib/inspec/plugin/v1.rb +2 -2
  65. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  66. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  67. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  68. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  69. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  70. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  71. data/lib/inspec/plugin/v1/registry.rb +0 -4
  72. data/lib/inspec/plugin/v2.rb +8 -8
  73. data/lib/inspec/plugin/v2/activator.rb +1 -1
  74. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  75. data/lib/inspec/plugin/v2/filter.rb +13 -13
  76. data/lib/inspec/plugin/v2/installer.rb +36 -24
  77. data/lib/inspec/plugin/v2/loader.rb +28 -28
  78. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  79. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  80. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  81. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  82. data/lib/inspec/plugin/v2/registry.rb +7 -7
  83. data/lib/inspec/polyfill.rb +0 -3
  84. data/lib/inspec/profile.rb +55 -63
  85. data/lib/inspec/profile_context.rb +27 -30
  86. data/lib/inspec/profile_vendor.rb +6 -9
  87. data/lib/inspec/reporters.rb +24 -24
  88. data/lib/inspec/reporters/automate.rb +17 -19
  89. data/lib/inspec/reporters/base.rb +1 -1
  90. data/lib/inspec/reporters/cli.rb +88 -91
  91. data/lib/inspec/reporters/json.rb +2 -4
  92. data/lib/inspec/reporters/json_automate.rb +1 -3
  93. data/lib/inspec/reporters/json_min.rb +1 -3
  94. data/lib/inspec/reporters/junit.rb +26 -28
  95. data/lib/inspec/reporters/yaml.rb +1 -3
  96. data/lib/inspec/require_loader.rb +0 -4
  97. data/lib/inspec/resource.rb +4 -125
  98. data/lib/inspec/resources.rb +121 -0
  99. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  100. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  101. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  102. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  103. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  104. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  105. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  106. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  107. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  108. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  109. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  110. data/lib/{resources → inspec/resources}/command.rb +11 -10
  111. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  112. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  113. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  114. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  115. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  116. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  117. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  118. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  119. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  120. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  121. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  122. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  123. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  124. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  125. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  126. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  127. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  128. data/lib/{resources → inspec/resources}/file.rb +80 -79
  129. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  130. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  131. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  132. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  133. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  134. data/lib/{resources → inspec/resources}/host.rb +31 -29
  135. data/lib/{resources → inspec/resources}/http.rb +24 -24
  136. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  137. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  138. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  139. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  140. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  141. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  142. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  143. data/lib/{resources → inspec/resources}/json.rb +8 -10
  144. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  145. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  146. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  147. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  148. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  149. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  150. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  151. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  152. data/lib/inspec/resources/mysql.rb +81 -0
  153. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  154. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  155. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  156. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  157. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  158. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  159. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  160. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  161. data/lib/{resources → inspec/resources}/os.rb +6 -8
  162. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  163. data/lib/{resources → inspec/resources}/package.rb +66 -65
  164. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  165. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  166. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  167. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  168. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  169. data/lib/{resources → inspec/resources}/port.rb +134 -136
  170. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  171. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  172. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  173. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  174. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  175. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  176. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  177. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  178. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  179. data/lib/inspec/resources/script.rb +1 -0
  180. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  181. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  182. data/lib/{resources → inspec/resources}/service.rb +74 -75
  183. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  184. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  185. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  186. data/lib/inspec/resources/sys_info.rb +30 -0
  187. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  188. data/lib/{resources → inspec/resources}/users.rb +65 -65
  189. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  190. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  191. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  192. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  193. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  194. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  195. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  196. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  197. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  198. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  199. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  200. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  201. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  202. data/lib/inspec/rspec_extensions.rb +24 -8
  203. data/lib/inspec/rule.rb +14 -15
  204. data/lib/inspec/runner.rb +28 -28
  205. data/lib/inspec/runner_mock.rb +1 -5
  206. data/lib/inspec/runner_rspec.rb +18 -20
  207. data/lib/inspec/runtime_profile.rb +2 -5
  208. data/lib/inspec/schema.rb +142 -143
  209. data/lib/inspec/secrets.rb +3 -7
  210. data/lib/inspec/secrets/yaml.rb +3 -5
  211. data/lib/inspec/shell.rb +11 -15
  212. data/lib/inspec/shell_detector.rb +6 -7
  213. data/lib/inspec/source_reader.rb +4 -8
  214. data/lib/inspec/ui.rb +33 -39
  215. data/lib/inspec/ui_table_helper.rb +12 -0
  216. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  217. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  218. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  219. data/lib/inspec/utils/deprecation.rb +6 -0
  220. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  221. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  222. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  223. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  224. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  225. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  226. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  227. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  228. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  229. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  230. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  231. data/lib/inspec/utils/json_log.rb +15 -0
  232. data/lib/inspec/utils/latest_version.rb +13 -0
  233. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  234. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  235. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  236. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  237. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  238. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  239. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  240. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  241. data/lib/inspec/utils/telemetry.rb +3 -3
  242. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  243. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  244. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  245. data/lib/inspec/version.rb +1 -1
  246. data/lib/matchers/matchers.rb +22 -25
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  248. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  249. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  250. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  256. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  257. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  258. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  259. data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
  260. data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
  261. data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
  262. data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
  263. data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
  264. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  265. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  266. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  267. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  268. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  269. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  270. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
  271. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
  272. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
  273. data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
  274. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
  275. data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
  276. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
  277. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  278. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  279. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  280. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  281. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  282. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  283. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  284. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  285. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  286. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  287. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  288. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
  289. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
  290. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
  291. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
  292. data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
  293. data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
  294. data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
  295. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  296. data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
  297. data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
  298. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  299. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  300. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  301. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
  302. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
  303. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
  304. data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
  305. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  306. data/lib/resource_support/aws.rb +67 -67
  307. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
  308. data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
  309. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
  310. data/lib/resources/aws/aws_billing_report.rb +15 -8
  311. data/lib/resources/aws/aws_billing_reports.rb +10 -7
  312. data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
  313. data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
  314. data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
  315. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
  316. data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
  317. data/lib/resources/aws/aws_config_recorder.rb +10 -6
  318. data/lib/resources/aws/aws_ebs_volume.rb +12 -8
  319. data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
  320. data/lib/resources/aws/aws_ec2_instance.rb +14 -11
  321. data/lib/resources/aws/aws_ec2_instances.rb +9 -5
  322. data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
  323. data/lib/resources/aws/aws_eks_cluster.rb +13 -9
  324. data/lib/resources/aws/aws_elb.rb +9 -5
  325. data/lib/resources/aws/aws_elbs.rb +9 -5
  326. data/lib/resources/aws/aws_flow_log.rb +17 -13
  327. data/lib/resources/aws/aws_iam_access_key.rb +15 -11
  328. data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
  329. data/lib/resources/aws/aws_iam_group.rb +9 -5
  330. data/lib/resources/aws/aws_iam_groups.rb +9 -5
  331. data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
  332. data/lib/resources/aws/aws_iam_policies.rb +9 -5
  333. data/lib/resources/aws/aws_iam_policy.rb +16 -12
  334. data/lib/resources/aws/aws_iam_role.rb +9 -5
  335. data/lib/resources/aws/aws_iam_root_user.rb +12 -8
  336. data/lib/resources/aws/aws_iam_user.rb +12 -12
  337. data/lib/resources/aws/aws_iam_users.rb +10 -10
  338. data/lib/resources/aws/aws_kms_key.rb +12 -8
  339. data/lib/resources/aws/aws_kms_keys.rb +9 -5
  340. data/lib/resources/aws/aws_rds_instance.rb +11 -8
  341. data/lib/resources/aws/aws_route_table.rb +11 -7
  342. data/lib/resources/aws/aws_route_tables.rb +10 -6
  343. data/lib/resources/aws/aws_s3_bucket.rb +14 -11
  344. data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
  345. data/lib/resources/aws/aws_s3_buckets.rb +9 -7
  346. data/lib/resources/aws/aws_security_group.rb +16 -12
  347. data/lib/resources/aws/aws_security_groups.rb +12 -8
  348. data/lib/resources/aws/aws_sns_subscription.rb +15 -11
  349. data/lib/resources/aws/aws_sns_topic.rb +10 -6
  350. data/lib/resources/aws/aws_sns_topics.rb +9 -5
  351. data/lib/resources/aws/aws_sqs_queue.rb +18 -14
  352. data/lib/resources/aws/aws_subnet.rb +11 -7
  353. data/lib/resources/aws/aws_subnets.rb +9 -5
  354. data/lib/resources/aws/aws_vpc.rb +10 -6
  355. data/lib/resources/aws/aws_vpcs.rb +9 -5
  356. data/lib/resources/azure/azure_backend.rb +20 -18
  357. data/lib/resources/azure/azure_generic_resource.rb +13 -15
  358. data/lib/resources/azure/azure_resource_group.rb +17 -19
  359. data/lib/resources/azure/azure_virtual_machine.rb +6 -8
  360. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
  361. data/lib/source_readers/flat.rb +6 -10
  362. data/lib/source_readers/inspec.rb +8 -12
  363. metadata +141 -142
  364. data/lib/resources/mysql.rb +0 -82
  365. data/lib/resources/sys_info.rb +0 -28
  366. data/lib/utils/deprecation.rb +0 -6
  367. data/lib/utils/json_log.rb +0 -18
  368. data/lib/utils/latest_version.rb +0 -22
@@ -1,18 +1,14 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'inspec/plugin/v1'
1
+ require "inspec/plugin/v1"
6
2
 
7
3
  module Inspec
8
4
  SecretsBackend = PluginRegistry.new
9
5
 
10
6
  def self.secrets(version)
11
7
  if version != 1
12
- raise 'Only secrets version 1 is supported!'
8
+ raise "Only secrets version 1 is supported!"
13
9
  end
14
10
  Inspec::Plugins::Secret
15
11
  end
16
12
  end
17
13
 
18
- require 'inspec/secrets/yaml'
14
+ require "inspec/secrets/yaml"
@@ -1,15 +1,13 @@
1
- # encoding: utf-8
2
-
3
- require 'yaml'
1
+ require "yaml"
4
2
 
5
3
  module Secrets
6
4
  class YAML < Inspec.secrets(1)
7
- name 'yaml'
5
+ name "yaml"
8
6
 
9
7
  attr_reader :inputs
10
8
 
11
9
  def self.resolve(target)
12
- unless target.is_a?(String) && File.file?(target) && ['.yml', '.yaml'].include?(File.extname(target).downcase)
10
+ unless target.is_a?(String) && File.file?(target) && [".yml", ".yaml"].include?(File.extname(target).downcase)
13
11
  return nil
14
12
  end
15
13
  new(target)
@@ -1,8 +1,4 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require 'pry'
1
+ require "pry"
6
2
 
7
3
  module Inspec
8
4
  # A pry based shell for inspec. Given a runner (with a configured backend and
@@ -19,7 +15,7 @@ module Inspec
19
15
  # context creates to evaluate each individual test file. We want to
20
16
  # pretend like we are constantly appending to the same file and want
21
17
  # to capture the local variable context from inside said class.
22
- @ctx_binding = @runner.eval_with_virtual_profile('binding')
18
+ @ctx_binding = @runner.eval_with_virtual_profile("binding")
23
19
  configure_pry
24
20
  @ctx_binding.pry
25
21
  end
@@ -35,28 +31,28 @@ module Inspec
35
31
  that = self
36
32
 
37
33
  # Add the help command
38
- Pry::Commands.block_command 'help', 'Show examples' do |resource|
34
+ Pry::Commands.block_command "help", "Show examples" do |resource|
39
35
  that.help(resource)
40
36
  end
41
37
 
42
38
  # configure pry shell prompt
43
- Pry.config.prompt_name = 'inspec'
39
+ Pry.config.prompt_name = "inspec"
44
40
  Pry.prompt = [proc { "#{readline_ignore("\e[1m\e[32m")}#{Pry.config.prompt_name}> #{readline_ignore("\e[0m")}" }]
45
41
 
46
42
  # Add a help menu as the default intro
47
- Pry.hooks.add_hook(:before_session, 'inspec_intro') do
43
+ Pry.hooks.add_hook(:before_session, "inspec_intro") do
48
44
  intro
49
45
  print_target_info
50
46
  end
51
47
 
52
48
  # Track the rules currently registered and what their merge count is.
53
- Pry.hooks.add_hook(:before_eval, 'inspec_before_eval') do
49
+ Pry.hooks.add_hook(:before_eval, "inspec_before_eval") do
54
50
  @runner.reset
55
51
  end
56
52
 
57
53
  # After pry has evaluated a commanding within the binding context of a
58
54
  # test file, register all the rules it discovered.
59
- Pry.hooks.add_hook(:after_eval, 'inspec_after_eval') do
55
+ Pry.hooks.add_hook(:after_eval, "inspec_after_eval") do
60
56
  @runner.load
61
57
  @runner.run_tests if !@runner.all_rules.empty?
62
58
  end
@@ -81,7 +77,7 @@ module Inspec
81
77
  end
82
78
 
83
79
  def intro
84
- puts 'Welcome to the interactive InSpec Shell'
80
+ puts "Welcome to the interactive InSpec Shell"
85
81
  puts "To find out how to use it, type: #{mark 'help'}"
86
82
  puts
87
83
  end
@@ -114,13 +110,13 @@ module Inspec
114
110
 
115
111
  #{print_target_info}
116
112
  EOF
117
- elsif topic == 'resources'
113
+ elsif topic == "resources"
118
114
  resources.sort.each do |resource|
119
115
  puts " - #{resource}"
120
116
  end
121
- elsif topic == 'matchers'
117
+ elsif topic == "matchers"
122
118
  print_matchers_help
123
- elsif !Inspec::Resource.registry[topic].nil?
119
+ elsif !Inspec::Resource.registry[topic].nil? # TODO: fix unnecessary logic
124
120
  topic_info = Inspec::Resource.registry[topic]
125
121
  info = "#{mark 'Name:'} #{topic}\n\n"
126
122
  unless topic_info.desc.nil?
@@ -1,6 +1,5 @@
1
- # encoding: utf-8
2
- require 'etc'
3
- require 'rbconfig'
1
+ require "etc"
2
+ require "rbconfig"
4
3
 
5
4
  module Inspec
6
5
  #
@@ -36,7 +35,7 @@ module Inspec
36
35
 
37
36
  def detect
38
37
  # Most of our detection code assumes a unix-like environment
39
- return nil if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
38
+ return nil if RbConfig::CONFIG["host_os"] =~ /mswin|mingw|cygwin/
40
39
 
41
40
  shellpath = detect_by_ppid
42
41
 
@@ -57,7 +56,7 @@ module Inspec
57
56
 
58
57
  def detect_by_ppid
59
58
  ppid = Process.ppid
60
- if Dir.exist?('/proc')
59
+ if Dir.exist?("/proc")
61
60
  File.readlink("/proc/#{ppid}/exe")
62
61
  else
63
62
  `ps -cp #{ppid} -o command=`.chomp
@@ -65,7 +64,7 @@ module Inspec
65
64
  end
66
65
 
67
66
  def detect_by_env
68
- ENV['SHELL']
67
+ ENV["SHELL"]
69
68
  end
70
69
 
71
70
  def detect_by_getpwuid
@@ -76,7 +75,7 @@ module Inspec
76
75
  # Strip any leading path elements
77
76
  #
78
77
  def shellname(shellpath)
79
- shellpath.split('/').last
78
+ shellpath.split("/").last
80
79
  end
81
80
 
82
81
  #
@@ -1,8 +1,4 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require 'inspec/plugin/v1'
1
+ require "inspec/plugin/v1"
6
2
 
7
3
  module Inspec
8
4
  # Pre-checking of target resolution. Make sure that SourceReader plugins
@@ -18,11 +14,11 @@ module Inspec
18
14
 
19
15
  def self.source_reader(version)
20
16
  if version != 1
21
- raise 'Only source readers version 1 is supported!'
17
+ raise "Only source readers version 1 is supported!"
22
18
  end
23
19
  Inspec::Plugins::SourceReader
24
20
  end
25
21
  end
26
22
 
27
- require 'source_readers/inspec'
28
- require 'source_readers/flat'
23
+ require "source_readers/inspec"
24
+ require "source_readers/flat"
@@ -1,6 +1,3 @@
1
- require 'tty-table'
2
- require 'tty-prompt'
3
-
4
1
  module Inspec
5
2
  # Provides simple terminal UI interaction primitives for CLI commands and plugins.
6
3
  class UI
@@ -18,15 +15,15 @@ module Inspec
18
15
  }.freeze
19
16
 
20
17
  GLYPHS = {
21
- bullet: '', # BULLET, Unicode: U+2022, UTF-8: E2 80 A2
22
- check: '', # HEAVY CHECK MARK, Unicode: U+2714, UTF-8: E2 9C 94
23
- swirl: '', # ANTICLOCKWISE OPEN CIRCLE ARROW, Unicode U+21BA, UTF-8: E2 86 BA
24
- script_x: '×', # MULTIPLICATION SIGN, Unicode: U+00D7, UTF-8: C3 97
25
- question: '?', # normal ASCII question mark
26
- em_dash: '', # BOX DRAWINGS LIGHT HORIZONTAL Unicode: U+2500, UTF-8: E2 94 80
27
- heavy_dash: '', # RING IN EQUAL TO, Unicode: U+2256, UTF-8: E2 89 96
28
- vertical_dash: '', # BOX DRAWINGS LIGHT VERTICAL, Unicode: U+2502, UTF-8: E2 94 82
29
- table_corner: '', # N-ARY CIRCLED DOT OPERATOR, Unicode: U+2A00, UTF-8: E2 A8 80
18
+ bullet: "", # BULLET, Unicode: U+2022, UTF-8: E2 80 A2
19
+ check: "", # HEAVY CHECK MARK, Unicode: U+2714, UTF-8: E2 9C 94
20
+ swirl: "", # ANTICLOCKWISE OPEN CIRCLE ARROW, Unicode U+21BA, UTF-8: E2 86 BA
21
+ script_x: "×", # MULTIPLICATION SIGN, Unicode: U+00D7, UTF-8: C3 97
22
+ question: "?", # normal ASCII question mark
23
+ em_dash: "", # BOX DRAWINGS LIGHT HORIZONTAL Unicode: U+2500, UTF-8: E2 94 80
24
+ heavy_dash: "", # RING IN EQUAL TO, Unicode: U+2256, UTF-8: E2 89 96
25
+ vertical_dash: "", # BOX DRAWINGS LIGHT VERTICAL, Unicode: U+2502, UTF-8: E2 94 82
26
+ table_corner: "", # N-ARY CIRCLED DOT OPERATOR, Unicode: U+2A00, UTF-8: E2 A8 80
30
27
  }.freeze
31
28
 
32
29
  EXIT_NORMAL = 0
@@ -62,7 +59,7 @@ module Inspec
62
59
  print_or_return(str.to_s, opts[:print])
63
60
  end
64
61
 
65
- def plain_line(str = '', opts = { print: true })
62
+ def plain_line(str = "", opts = { print: true })
66
63
  print_or_return(str.to_s + "\n", opts[:print])
67
64
  end
68
65
 
@@ -96,11 +93,11 @@ module Inspec
96
93
  end
97
94
 
98
95
  result = "\n"
99
- result += ' ' + (color? ? GLYPHS[:em_dash] : '-') * dash_length + ' '
100
- result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:white] : ''
96
+ result += " " + (color? ? GLYPHS[:em_dash] : "-") * dash_length + " "
97
+ result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:white] : ""
101
98
  result += str
102
- result += color? ? ANSI_CODES[:reset] : ''
103
- result += ' ' + (color? ? GLYPHS[:em_dash] : '-') * dash_length + ' '
99
+ result += color? ? ANSI_CODES[:reset] : ""
100
+ result += " " + (color? ? GLYPHS[:em_dash] : "-") * dash_length + " "
104
101
  result += "\n\n"
105
102
 
106
103
  print_or_return(result, opts[:print])
@@ -109,11 +106,11 @@ module Inspec
109
106
  # Issues a one-line message, with 'ERROR: ' prepended in bold red.
110
107
  def error(str, opts = { print: true })
111
108
  str = str.dup.to_s
112
- result = ''
113
- result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:red] : ''
114
- result += 'ERROR:'
115
- result += color? ? ANSI_CODES[:reset] : ''
116
- result += ' '
109
+ result = ""
110
+ result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:red] : ""
111
+ result += "ERROR:"
112
+ result += color? ? ANSI_CODES[:reset] : ""
113
+ result += " "
117
114
  result += str
118
115
  result += "\n"
119
116
  print_or_return(result, opts[:print])
@@ -122,11 +119,11 @@ module Inspec
122
119
  # Issues a one-line message, with 'WARNING: ' prepended in bold yellow.
123
120
  def warning(str, opts = { print: true })
124
121
  str = str.dup.to_s
125
- result = ''
126
- result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:yellow] : ''
127
- result += 'WARNING:'
128
- result += color? ? ANSI_CODES[:reset] : ''
129
- result += ' '
122
+ result = ""
123
+ result += color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:yellow] : ""
124
+ result += "WARNING:"
125
+ result += color? ? ANSI_CODES[:reset] : ""
126
+ result += " "
130
127
  result += str
131
128
  result += "\n"
132
129
  print_or_return(result, opts[:print])
@@ -137,15 +134,15 @@ module Inspec
137
134
  if color?
138
135
  result = ANSI_CODES[:bold] + GLYPHS[:heavy_dash] * 80 + ANSI_CODES[:reset] + "\n"
139
136
  else
140
- result = '-' * 80 + "\n"
137
+ result = "-" * 80 + "\n"
141
138
  end
142
139
  print_or_return(result, opts[:print])
143
140
  end
144
141
 
145
142
  # Makes a bullet point.
146
143
  def list_item(str, opts = { print: true })
147
- bullet = color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:white] + GLYPHS[:bullet] + ANSI_CODES[:reset] : '*'
148
- result = ' ' + bullet + ' ' + str.to_s + "\n"
144
+ bullet = color? ? ANSI_CODES[:bold] + ANSI_CODES[:color][:white] + GLYPHS[:bullet] + ANSI_CODES[:reset] : "*"
145
+ result = " " + bullet + " " + str.to_s + "\n"
149
146
  print_or_return(result, opts[:print])
150
147
  end
151
148
 
@@ -158,6 +155,8 @@ module Inspec
158
155
  # t << ['', '', 1]
159
156
  # end
160
157
  def table(opts = { print: true })
158
+ require "inspec/ui_table_helper"
159
+
161
160
  the_table = TableHelper.new
162
161
  yield(the_table)
163
162
 
@@ -174,13 +173,6 @@ module Inspec
174
173
  print_or_return(result, opts[:print])
175
174
  end
176
175
 
177
- class TableHelper < TTY::Table
178
- def header=(ary)
179
- cells = ary.dup.map { |label| { value: label, alignment: :center } }
180
- @header = TTY::Table::Header.new(cells)
181
- end
182
- end
183
-
184
176
  #=========================================================================#
185
177
  # Exit Codes
186
178
  #=========================================================================#
@@ -190,7 +182,7 @@ module Inspec
190
182
  if code_sym.is_a? Numeric
191
183
  code_int = code_sym
192
184
  else
193
- code_const = ('EXIT_' + code_sym.to_s.upcase).to_sym
185
+ code_const = ("EXIT_" + code_sym.to_s.upcase).to_sym
194
186
  unless self.class.const_defined?(code_const)
195
187
  warning("Unrecognized exit constant #{code_const} - exit with code 1")
196
188
  exit(:usage_error)
@@ -210,8 +202,10 @@ module Inspec
210
202
  # This simply returns a TTY::Prompt object, gated on interactivity being enabled.
211
203
  def prompt
212
204
  unless interactive?
213
- raise Inspec::UserInteractionRequired, 'Somthing is trying to ask the user a question, but interactivity is disabled.'
205
+ raise Inspec::UserInteractionRequired, "Somthing is trying to ask the user a question, but interactivity is disabled."
214
206
  end
207
+ require "tty-prompt"
208
+
215
209
  @prompt ||= TTY::Prompt.new
216
210
  end
217
211
  end
@@ -0,0 +1,12 @@
1
+ require "tty-table"
2
+
3
+ module Inspec
4
+ class UI
5
+ class TableHelper < TTY::Table
6
+ def header=(ary)
7
+ cells = ary.dup.map { |label| { value: label, alignment: :center } }
8
+ @header = TTY::Table::Header.new(cells)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,15 +1,11 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- require 'shellwords'
1
+ require "shellwords"
6
2
 
7
3
  class CommandWrapper
8
4
  UNIX_SHELLS = %w{sh bash zsh ksh}.freeze
9
5
 
10
6
  def self.wrap(cmd, options)
11
7
  unless options.is_a?(Hash)
12
- raise 'All options for the command wrapper must be provided as a hash. '\
8
+ raise "All options for the command wrapper must be provided as a hash. "\
13
9
  "You entered: #{options.inspect}. Please consult the documentation."
14
10
  end
15
11
 
@@ -21,7 +17,7 @@ class CommandWrapper
21
17
  raise "Don't know how to wrap commands for shell: #{shell.inspect}." unless UNIX_SHELLS.include?(shell)
22
18
 
23
19
  path = options[:path] || shell
24
- args = options[:args] || '-c'
25
- path.to_s + ' ' + args + ' ' + Shellwords.escape(cmd)
20
+ args = options[:args] || "-c"
21
+ path.to_s + " " + args + " " + Shellwords.escape(cmd)
26
22
  end
27
23
  end
@@ -1,7 +1,3 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
1
  module Converter
6
2
  # convert the value to an integer if we have numbers only
7
3
  # otherwise we return the string
@@ -1,7 +1,3 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
1
  module DatabaseHelper
6
2
  class SQLColumn
7
3
  def initialize(row, name)
@@ -10,11 +6,11 @@ module DatabaseHelper
10
6
  end
11
7
 
12
8
  def value
13
- @row.nil? ? '' : @row[@name.downcase]
9
+ @row.nil? ? "" : @row[@name.downcase]
14
10
  end
15
11
 
16
12
  def to_s
17
- 'SQL Column'
13
+ "SQL Column"
18
14
  end
19
15
  end
20
16
 
@@ -29,7 +25,7 @@ module DatabaseHelper
29
25
  end
30
26
 
31
27
  def to_s
32
- 'SQL Row'
28
+ "SQL Row"
33
29
  end
34
30
  end
35
31
 
@@ -73,7 +69,7 @@ module DatabaseHelper
73
69
  end
74
70
 
75
71
  def to_s
76
- 'SQL ResultSet'
72
+ "SQL ResultSet"
77
73
  end
78
74
  end
79
75
  end
@@ -0,0 +1,6 @@
1
+ # A system to provide a unified deprecation facility for InSpec
2
+
3
+ require "inspec/utils/deprecation/errors"
4
+ require "inspec/utils/deprecation/config_file"
5
+ require "inspec/utils/deprecation/deprecator"
6
+ require "inspec/utils/deprecation/global_method"
@@ -1,6 +1,6 @@
1
- require 'stringio'
2
- require 'json'
3
- require 'inspec/globals'
1
+ require "stringio"
2
+ require "json"
3
+ require "inspec/globals"
4
4
 
5
5
  module Inspec
6
6
  module Deprecation
@@ -37,7 +37,7 @@ module Inspec
37
37
  private
38
38
 
39
39
  def open_default_config_io
40
- default_path = File.join(Inspec.src_root, 'etc', 'deprecations.json')
40
+ default_path = File.join(Inspec.src_root, "etc", "deprecations.json")
41
41
  unless File.exist?(default_path)
42
42
  raise Inspec::Deprecation::MalformedConfigError, "Missing deprecation config file: #{default_path}"
43
43
  end
@@ -51,28 +51,28 @@ module Inspec
51
51
  validate_file_version
52
52
  validate_unknown_group_action
53
53
 
54
- unless @raw_data.key?('groups')
55
- raise Inspec::Deprecation::InvalidConfigFileError, 'Missing groups field'
54
+ unless @raw_data.key?("groups")
55
+ raise Inspec::Deprecation::InvalidConfigFileError, "Missing groups field"
56
56
  end
57
- unless @raw_data['groups'].is_a?(Hash)
58
- raise Inspec::Deprecation::InvalidConfigFileError, 'Groups field must be a Hash'
57
+ unless @raw_data["groups"].is_a?(Hash)
58
+ raise Inspec::Deprecation::InvalidConfigFileError, "Groups field must be a Hash"
59
59
  end
60
- @raw_data['groups'].each do |group_name, group_info|
60
+ @raw_data["groups"].each do |group_name, group_info|
61
61
  validate_group_entry(group_name, group_info)
62
62
  end
63
63
  end
64
64
 
65
65
  def validate_file_version
66
- unless @raw_data.key?('file_version')
67
- raise Inspec::Deprecation::InvalidConfigFileError, 'Missing file_version field'
66
+ unless @raw_data.key?("file_version")
67
+ raise Inspec::Deprecation::InvalidConfigFileError, "Missing file_version field"
68
68
  end
69
- unless @raw_data['file_version'] == '1.0.0'
69
+ unless @raw_data["file_version"] == "1.0.0"
70
70
  raise Inspec::Deprecation::InvalidConfigFileError, "Unrecognized file_version '#{@raw_data['file_version']}' - supported versions: 1.0.0"
71
71
  end
72
72
  end
73
73
 
74
74
  def validate_unknown_group_action
75
- seen_action = (@raw_data['unknown_group_action'] || @unknown_group_action).to_sym
75
+ seen_action = (@raw_data["unknown_group_action"] || @unknown_group_action).to_sym
76
76
  unless VALID_ACTIONS.include?(seen_action)
77
77
  raise Inspec::Deprecation::UnrecognizedActionError, "Unrecognized value '#{seen_action}' for field 'unknown_group_action' - supported actions: #{VALID_ACTIONS.map(&:to_s).join(', ')}"
78
78
  end
@@ -88,15 +88,15 @@ module Inspec
88
88
 
89
89
  entry = GroupEntry.new(name.to_sym)
90
90
 
91
- opts['action'] = (opts['action'] || :warn).to_sym
92
- unless VALID_ACTIONS.include?(opts['action'])
91
+ opts["action"] = (opts["action"] || :warn).to_sym
92
+ unless VALID_ACTIONS.include?(opts["action"])
93
93
  raise Inspec::Deprecation::UnrecognizedActionError, "Unrecognized action for group '#{name}' - saw '#{opts['action']}', supported actions: #{VALID_ACTIONS.map(&:to_s).join(', ')}"
94
94
  end
95
- entry.action = opts['action']
95
+ entry.action = opts["action"]
96
96
 
97
- entry.suffix = opts['suffix']
98
- entry.prefix = opts['prefix']
99
- entry.exit_status = opts['exit_status']
97
+ entry.suffix = opts["suffix"]
98
+ entry.prefix = opts["prefix"]
99
+ entry.exit_status = opts["exit_status"]
100
100
 
101
101
  groups[name.to_sym] = entry
102
102
  end