From ec005438bcd97535aa2da3b046801423218f0d60 Mon Sep 17 00:00:00 2001 From: Sam Levenick Date: Fri, 12 Oct 2018 14:46:56 -0700 Subject: [PATCH] Add basic requires --- provider/inspec.rb | 12 ++++++++++++ templates/inspec/singular_resource.erb | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/provider/inspec.rb b/provider/inspec.rb index 3bd7dba091f8..dbf08a36d308 100644 --- a/provider/inspec.rb +++ b/provider/inspec.rb @@ -104,5 +104,17 @@ def resource_ref? (property) def typed_array? (property) return property.is_a?(::Api::Type::Array) end + + def nested_object? (property) + return property.is_a?(::Api::Type::NestedObject) + end + + def generate_requires(properties, requires = []) + nested_props = properties.select{ |type| nested_object?(type) } + requires.concat(properties.reject{ |type| primitive?(type) || resource_ref?(type) || nested_object?(type) }.collect(&:requires)) + requires.concat(nested_props.map{|nested_prop| generate_requires(nested_prop.properties) } ) + requires.concat(nested_props.map{|nested_prop| nested_prop.property_file }) + requires + end end end diff --git a/templates/inspec/singular_resource.erb b/templates/inspec/singular_resource.erb index f248f8181ec3..4d69292f0932 100644 --- a/templates/inspec/singular_resource.erb +++ b/templates/inspec/singular_resource.erb @@ -16,6 +16,17 @@ <%= lines(autogen_notice :ruby) -%> +<% + require 'google/string_utils' + + inside_indent = 8 + + requires = generate_requires(object.all_user_properties) + requires << 'inspec/resource' + requires << 'google/hash_utils' +-%> +<%= lines(emit_requires(requires)) -%> + # A provider to manage <%= @api.name -%> resources. <%= lines(indent( emit_rubocop(binding, :class,