inspec 2.2.102 → 2.2.112

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/CHANGELOG.md +25 -7
  4. data/Rakefile +8 -2
  5. data/docs/profiles.md +9 -0
  6. data/docs/resources/aws_security_group.md.erb +19 -2
  7. data/docs/resources/gem.md.erb +24 -5
  8. data/docs/resources/mssql_session.md.erb +8 -0
  9. data/lib/inspec/plugin/v2/loader.rb +33 -7
  10. data/lib/inspec/reporters/json_automate.rb +1 -1
  11. data/lib/inspec/version.rb +1 -1
  12. data/lib/plugins/README.md +16 -0
  13. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +12 -0
  14. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +162 -0
  15. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +114 -0
  16. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +46 -0
  17. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +11 -0
  18. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +39 -0
  19. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +394 -0
  20. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +184 -0
  21. data/lib/{bundles → plugins}/inspec-init/README.md +0 -0
  22. data/lib/plugins/inspec-init/lib/inspec-init.rb +12 -0
  23. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +28 -0
  24. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +81 -0
  25. data/lib/{bundles → plugins/inspec-init/lib}/inspec-init/templates/profile/README.md +0 -0
  26. data/lib/{bundles → plugins/inspec-init/lib}/inspec-init/templates/profile/controls/example.rb +0 -0
  27. data/lib/{bundles → plugins/inspec-init/lib}/inspec-init/templates/profile/inspec.yml +0 -0
  28. data/lib/{bundles → plugins/inspec-init/lib}/inspec-init/templates/profile/libraries/.gitkeep +0 -0
  29. data/lib/plugins/inspec-init/test/functional/inspec_init_test.rb +30 -0
  30. data/lib/plugins/shared/core_plugin_test_helper.rb +50 -0
  31. data/lib/resources/aws/aws_security_group.rb +38 -6
  32. data/lib/resources/gem.rb +7 -1
  33. data/lib/resources/mssql_session.rb +4 -2
  34. metadata +21 -17
  35. data/lib/bundles/inspec-artifact.rb +0 -7
  36. data/lib/bundles/inspec-artifact/README.md +0 -1
  37. data/lib/bundles/inspec-artifact/cli.rb +0 -278
  38. data/lib/bundles/inspec-habitat.rb +0 -12
  39. data/lib/bundles/inspec-habitat/cli.rb +0 -37
  40. data/lib/bundles/inspec-habitat/log.rb +0 -10
  41. data/lib/bundles/inspec-habitat/profile.rb +0 -391
  42. data/lib/bundles/inspec-init.rb +0 -12
  43. data/lib/bundles/inspec-init/cli.rb +0 -39
  44. data/lib/bundles/inspec-init/renderer.rb +0 -79
@@ -1,79 +0,0 @@
1
- require 'fileutils'
2
- require 'erb'
3
-
4
- module Init
5
- class Renderer
6
- # Creates a renderer able to render the given template type
7
- # 1. iterate over all files
8
- # 2. read content in erb
9
- # 3. write to full_destination_root_path
10
-
11
- attr_reader :overwrite_mode, :ui
12
- def initialize(cli_ui, cli_options = {})
13
- @ui = cli_ui
14
- @overwrite_mode = cli_options['overwrite']
15
- end
16
-
17
- # rubocop: disable Metrics/AbcSize
18
- def render_with_values(template_type, template_values = {})
19
- # look for template directory
20
- base_dir = File.join(File.dirname(__FILE__), 'templates', template_type)
21
- # prepare glob for all subdirectories and files
22
- template_glob = File.join(base_dir, '**', '{*,.*}')
23
- # Use the name attribute to define the path to the profile.
24
- profile_path = template_values[:name]
25
- # Use slashes (\, /) to split up the name into an Array then use the last entry
26
- # to reset the name of the profile.
27
- template_values[:name] = template_values[:name].split(%r{\\|\/}).last
28
- # Generate the full full_destination_root_path path on disk
29
- full_destination_root_path = Pathname.new(Dir.pwd).join(profile_path)
30
- ui.plain_text "Create new #{template_type} at #{ui.mark_text(full_destination_root_path)}"
31
-
32
- # check that the directory does not exist
33
- if File.exist?(full_destination_root_path) && !overwrite_mode
34
- ui.plain_text "#{ui.mark_text(full_destination_root_path)} exists already, use --overwrite"
35
- ui.exit(1)
36
- end
37
-
38
- # ensure that full_destination_root_path directory is available
39
- FileUtils.mkdir_p(full_destination_root_path)
40
-
41
- # iterate over files and write to full_destination_root_path
42
- Dir.glob(template_glob) do |file|
43
- relative_destination_item_path = Pathname.new(file).relative_path_from(Pathname.new(base_dir))
44
- full_destination_item_path = Pathname.new(full_destination_root_path).join(relative_destination_item_path)
45
- if File.directory?(file)
46
- ui.li "Create directory #{ui.mark_text(relative_destination_item_path)}"
47
- FileUtils.mkdir_p(full_destination_item_path)
48
- elsif File.file?(file)
49
- ui.li "Create file #{ui.mark_text(relative_destination_item_path)}"
50
- # read & render content
51
- content = render(File.read(file), template_values)
52
- # write file content
53
- File.write(full_destination_item_path, content)
54
- else
55
- ui.plain_text "Ignore #{file}, because its not an file or directoy"
56
- end
57
- end
58
- end
59
- # rubocop: enable Metrics/AbcSize
60
-
61
- # This is a render helper to bind hash values to a ERB template
62
- # ERB provides result_with_hash in ruby 2.5.0+, which does exactly this
63
- def render(template_content, hash)
64
- # create a new binding class
65
- cls = Class.new do
66
- hash.each do |key, value|
67
- define_method key.to_sym do
68
- value
69
- end
70
- end
71
- # expose binding
72
- define_method :bind do
73
- binding
74
- end
75
- end
76
- ERB.new(template_content).result(cls.new.bind)
77
- end
78
- end
79
- end