|
21 | 21 | module Provider |
22 | 22 | # Code generator for Example Cookbooks that manage Google Cloud Platform |
23 | 23 | # resources. |
| 24 | + # rubocop:disable Metrics/ClassLength |
24 | 25 | class Inspec < Provider::Core |
25 | 26 | include Google::RubyUtils |
26 | 27 | # Settings for the provider |
@@ -54,6 +55,17 @@ def generate_resource(data) |
54 | 55 | out_file: \ |
55 | 56 | File.join(target_folder, "google_#{data[:product_name]}_#{name}".pluralize + '.rb') |
56 | 57 | ) |
| 58 | + generate_documentation(data) |
| 59 | + end |
| 60 | + |
| 61 | + # Generates InSpec markdown documents for the resource |
| 62 | + def generate_documentation(data) |
| 63 | + name = data[:object].name.underscore |
| 64 | + docs_folder = File.join(data[:output_folder], 'docs', 'resources') |
| 65 | + generate_resource_file data.clone.merge( |
| 66 | + default_template: 'templates/inspec/doc-template.md.erb', |
| 67 | + out_file: File.join(docs_folder, "google_#{data[:product_name]}_#{name}.md") |
| 68 | + ) |
57 | 69 | end |
58 | 70 |
|
59 | 71 | # Format a url that may be include newlines into a single line |
@@ -161,5 +173,22 @@ def nested_object_requires(nested_object_type) |
161 | 173 | [nested_object_type.__resource.name, nested_object_type.name.underscore].join('_') |
162 | 174 | ).downcase |
163 | 175 | end |
| 176 | + |
| 177 | + def resource_name(object, product_ns) |
| 178 | + "google_#{product_ns.downcase}_#{object.name.underscore}" |
| 179 | + end |
| 180 | + |
| 181 | + def sub_property_descriptions(property) |
| 182 | + if nested_object?(property) |
| 183 | + return property.properties.map \ |
| 184 | + { |prop| " * `#{prop.name}`: #{prop.description}" }.join("\n") |
| 185 | + end |
| 186 | + # rubocop:disable Style/GuardClause |
| 187 | + if typed_array?(property) |
| 188 | + return property.item_type.properties.map \ |
| 189 | + { |prop| " * `#{prop.name}`: #{prop.description}" }.join("\n") |
| 190 | + end |
| 191 | + end |
| 192 | + # rubocop:enable Style/GuardClause |
164 | 193 | end |
165 | 194 | end |
0 commit comments