diff --git a/.changes/unreleased/FEATURES-20250616-181322.yaml b/.changes/unreleased/FEATURES-20250616-181322.yaml new file mode 100644 index 0000000..0cfe119 --- /dev/null +++ b/.changes/unreleased/FEATURES-20250616-181322.yaml @@ -0,0 +1,5 @@ +kind: FEATURES +body: 'generate: Added support for defining import example file (`import-by-string-id.tf`) using Terraform configuration and the `id` attribute' +time: 2025-06-16T18:13:22.627319-04:00 +custom: + Issue: "472" diff --git a/README.md b/README.md index c9fb2a0..89a79d8 100644 --- a/README.md +++ b/README.md @@ -223,15 +223,16 @@ For examples: > **NOTE:** In the following conventional paths for examples, `` and `` include the provider prefix as well, but the provider prefix is **NOT** included in``. > For example, the data source [`caller_identity`](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) in the `aws` provider would have an "example" conventional path of: `examples/data-sources/aws_caller_identity/data-source.tf` -| Path | Description | -|---------------------------------------------------------------------------|-----------------------------------| -| `examples/` | Root of examples | -| `examples/provider/provider.tf` | Provider example config | -| `examples/data-sources//data-source.tf` | Data source example config | -| `examples/ephemeral-resources//ephemeral-resource.tf` | Ephemeral resource example config | -| `examples/functions//function.tf` | Function example config | -| `examples/resources//resource.tf` | Resource example config | -| `examples/resources//import.sh` | Resource example import command | +| Path | Description | +|---------------------------------------------------------------------------|--------------------------------------| +| `examples/` | Root of examples | +| `examples/provider/provider.tf` | Provider example config | +| `examples/data-sources//data-source.tf` | Data source example config | +| `examples/ephemeral-resources//ephemeral-resource.tf` | Ephemeral resource example config | +| `examples/functions//function.tf` | Function example config | +| `examples/resources//resource.tf` | Resource example config | +| `examples/resources//import.sh` | Resource example import command | +| `examples/resources//import-by-string-id.tf` | Resource example import by id config | #### Migration @@ -280,31 +281,33 @@ using the following data fields and functions: ##### Provider Fields -| Field | Type | Description | -|------------------------:|:------:|-------------------------------------------------------------------------------------------| -| `.Description` | string | Provider description | -| `.HasExample` | bool | Is there an example file? | -| `.ExampleFile` | string | Path to the file with the terraform configuration example | -| `.ProviderName` | string | Canonical provider name (ex. `terraform-provider-random`) | -| `.ProviderShortName` | string | Short version of the rendered provider name (ex. `random`) | +| Field | Type | Description | +|-------------------------|--------|-------------------------------------------------------------------------------------------| +| `.Description` | string | Provider description | +| `.HasExample` | bool | Is there an example file? | +| `.ExampleFile` | string | Path to the file with the terraform configuration example | +| `.ProviderName` | string | Canonical provider name (ex. `terraform-provider-random`) | +| `.ProviderShortName` | string | Short version of the rendered provider name (ex. `random`) | | `.RenderedProviderName` | string | Value provided via argument `--rendered-provider-name`, otherwise same as `.ProviderName` | -| `.SchemaMarkdown` | string | a Markdown formatted Provider Schema definition | +| `.SchemaMarkdown` | string | a Markdown formatted Provider Schema definition | ##### Managed Resource / Ephemeral Resource / Data Source Fields -| Field | Type | Description | -|------------------------:|:------:|-------------------------------------------------------------------------------------------| -| `.Name` | string | Name of the resource/data-source (ex. `tls_certificate`) | -| `.Type` | string | Either `Resource` or `Data Source` | -| `.Description` | string | Resource / Data Source description | -| `.HasExample` | bool | Is there an example file? | -| `.ExampleFile` | string | Path to the file with the terraform configuration example | -| `.HasImport` | bool | Is there an import file? | -| `.ImportFile` | string | Path to the file with the command for importing the resource | -| `.ProviderName` | string | Canonical provider name (ex. `terraform-provider-random`) | -| `.ProviderShortName` | string | Short version of the rendered provider name (ex. `random`) | +| Field | Type | Description | +|-------------------------|--------|-------------------------------------------------------------------------------------------| +| `.Name` | string | Name of the resource/data-source (ex. `tls_certificate`) | +| `.Type` | string | Either `Resource` or `Data Source` | +| `.Description` | string | Resource / Data Source description | +| `.HasExample` | bool | Is there an example file? | +| `.ExampleFile` | string | Path to the file with the terraform configuration example | +| `.HasImport` | bool | Is there an import shell file? (`terraform import` shell example) | +| `.ImportFile` | string | Path to the file with the command for importing the resource | +| `.HasImportIDConfig` | bool | Is there an import terraform config file? (`import` block example with `id`) | +| `.ImportIDConfigFile` | string | Path to the file with the Terraform configuration for importing the resource by `id` | +| `.ProviderName` | string | Canonical provider name (ex. `terraform-provider-random`) | +| `.ProviderShortName` | string | Short version of the rendered provider name (ex. `random`) | | `.RenderedProviderName` | string | Value provided via argument `--rendered-provider-name`, otherwise same as `.ProviderName` | -| `.SchemaMarkdown` | string | a Markdown formatted Resource / Data Source Schema definition | +| `.SchemaMarkdown` | string | a Markdown formatted Resource / Data Source Schema definition | ##### Provider-defined Function Fields diff --git a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_generic_templates.txtar b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_generic_templates.txtar index cf5f7b6..b0029a0 100644 --- a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_generic_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_generic_templates.txtar @@ -144,6 +144,8 @@ HasExample: true ExampleFile: $WORK/examples/resources/scaffolding_example/resource.tf HasImport: true ImportFile: $WORK/examples/resources/scaffolding_example/import.sh +HasImportIDConfig: true +ImportIDConfigFile: $WORK/examples/resources/scaffolding_example/import-by-string-id.tf ProviderName: terraform-provider-scaffolding ProviderShortName: scaffolding RenderedProviderName: terraform-provider-scaffolding @@ -191,7 +193,7 @@ codefile: Import is supported using the following syntax: ```shell -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" ``` tffile: @@ -305,6 +307,8 @@ HasExample: {{.HasExample}} ExampleFile: {{.ExampleFile}} HasImport: {{.HasImport}} ImportFile: {{.ImportFile}} +HasImportIDConfig: {{.HasImportIDConfig}} +ImportIDConfigFile: {{.ImportIDConfigFile}} ProviderName: {{.ProviderName}} ProviderShortName: {{.ProviderShortName}} RenderedProviderName: {{.RenderedProviderName}} @@ -371,12 +375,21 @@ data "scaffolding_example" "example" { provider "scaffolding" { # example configuration here } --- examples/resources/scaffolding_example/resource.tf -- +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" +-- examples/resources/scaffolding_example/resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} -- internal/provider/example_data_source.go -- // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 diff --git a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_named_templates.txtar b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_named_templates.txtar index a735495..e7a5ccb 100644 --- a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_named_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_named_templates.txtar @@ -144,6 +144,8 @@ HasExample: true ExampleFile: $WORK/examples/resources/scaffolding_example/resource.tf HasImport: true ImportFile: $WORK/examples/resources/scaffolding_example/import.sh +HasImportIDConfig: true +ImportIDConfigFile: $WORK/examples/resources/scaffolding_example/import-by-string-id.tf ProviderName: terraform-provider-scaffolding ProviderShortName: scaffolding RenderedProviderName: terraform-provider-scaffolding @@ -191,7 +193,7 @@ codefile: Import is supported using the following syntax: ```shell -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" ``` tffile: @@ -305,6 +307,8 @@ HasExample: {{.HasExample}} ExampleFile: {{.ExampleFile}} HasImport: {{.HasImport}} ImportFile: {{.ImportFile}} +HasImportIDConfig: {{.HasImportIDConfig}} +ImportIDConfigFile: {{.ImportIDConfigFile}} ProviderName: {{.ProviderName}} ProviderShortName: {{.ProviderShortName}} RenderedProviderName: {{.RenderedProviderName}} @@ -371,12 +375,21 @@ data "scaffolding_example" "example" { provider "scaffolding" { # example configuration here } --- examples/resources/scaffolding_example/resource.tf -- +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" +-- examples/resources/scaffolding_example/resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} -- internal/provider/example_data_source.go -- // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 diff --git a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_no_templates.txtar b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_no_templates.txtar index 94f1c26..7c30ad2 100644 --- a/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_no_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/provider-build/generate/framework_provider_success_no_templates.txtar @@ -122,6 +122,29 @@ resource "scaffolding_example" "example" { ### Read-Only - `id` (String) Example identifier + +## Import + +Import is supported using the following syntax: + +In Terraform v1.5.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `id` attribute, for example: + +```terraform +import { + to = scaffolding_example.example + id = "id-123" +} + +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +``` + +The [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import) can be used, for example: + +```shell +terraform import scaffolding_example.example "id-123" +``` -- examples/README.md -- # Examples @@ -140,6 +163,17 @@ data "scaffolding_example" "example" { provider "scaffolding" { # example configuration here } +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +-- examples/resources/scaffolding_example/import.sh -- +terraform import scaffolding_example.example "id-123" -- examples/resources/scaffolding_example/resource.tf -- resource "scaffolding_example" "example" { configurable_attribute = "some-value" diff --git a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_generic_templates.txtar b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_generic_templates.txtar index 3984d4e..85a766b 100644 --- a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_generic_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_generic_templates.txtar @@ -193,6 +193,8 @@ HasExample: true ExampleFile: $WORK/examples/resources/scaffolding_example/resource.tf HasImport: true ImportFile: $WORK/examples/resources/scaffolding_example/import.sh +HasImportIDConfig: true +ImportIDConfigFile: $WORK/examples/resources/scaffolding_example/import-by-string-id.tf ProviderName: terraform-provider-scaffolding ProviderShortName: scaffolding RenderedProviderName: terraform-provider-scaffolding @@ -240,7 +242,7 @@ codefile: Import is supported using the following syntax: ```shell -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" ``` tffile: @@ -453,6 +455,8 @@ HasExample: {{.HasExample}} ExampleFile: {{.ExampleFile}} HasImport: {{.HasImport}} ImportFile: {{.ImportFile}} +HasImportIDConfig: {{.HasImportIDConfig}} +ImportIDConfigFile: {{.ImportIDConfigFile}} ProviderName: {{.ProviderName}} ProviderShortName: {{.ProviderShortName}} RenderedProviderName: {{.RenderedProviderName}} @@ -581,11 +585,20 @@ provider "scaffolding" { # example configuration here } -- examples/resources/scaffolding_example/resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" -- examples/ephemeral-resources/scaffolding_example/ephemeral-resource.tf -- resource "scaffolding_example" "example" { configurable_attribute = "some-value" diff --git a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_legacy_docs.txtar b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_legacy_docs.txtar index 9d17525..0c049c1 100644 --- a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_legacy_docs.txtar +++ b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_legacy_docs.txtar @@ -193,11 +193,20 @@ resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/ephemeral-resources/scaffolding_example/ephemeral-resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" -- schema.json -- { "format_version": "1.0", diff --git a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_named_templates.txtar b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_named_templates.txtar index e90405e..93dd75a 100644 --- a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_named_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_named_templates.txtar @@ -192,6 +192,8 @@ HasExample: true ExampleFile: $WORK/examples/resources/scaffolding_example/resource.tf HasImport: true ImportFile: $WORK/examples/resources/scaffolding_example/import.sh +HasImportIDConfig: true +ImportIDConfigFile: $WORK/examples/resources/scaffolding_example/import-by-string-id.tf ProviderName: terraform-provider-scaffolding ProviderShortName: Scaffolding RenderedProviderName: Scaffolding @@ -239,7 +241,7 @@ codefile: Import is supported using the following syntax: ```shell -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" ``` tffile: @@ -452,6 +454,8 @@ HasExample: {{.HasExample}} ExampleFile: {{.ExampleFile}} HasImport: {{.HasImport}} ImportFile: {{.ImportFile}} +HasImportIDConfig: {{.HasImportIDConfig}} +ImportIDConfigFile: {{.ImportIDConfigFile}} ProviderName: {{.ProviderName}} ProviderShortName: {{.ProviderShortName}} RenderedProviderName: {{.RenderedProviderName}} @@ -584,11 +588,20 @@ resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/ephemeral-resources/scaffolding_example/ephemeral-resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" -- schema.json -- { "format_version": "1.0", diff --git a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_no_templates.txtar b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_no_templates.txtar index 04f2bcc..80251b8 100644 --- a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_no_templates.txtar +++ b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_no_templates.txtar @@ -192,6 +192,23 @@ resource "scaffolding_example" "example" { ### Read-Only - `id` (String) Example identifier + +## Import + +Import is supported using the following syntax: + +In Terraform v1.5.0 and later, the [`import` block](https://developer.hashicorp.com/terraform/language/import) can be used with the `id` attribute, for example: + +```terraform +import { + to = scaffolding_example.example + id = "id-123" +} + +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +``` -- expected-ephemeral-resource.md -- --- # generated by https://github.com/hashicorp/terraform-plugin-docs @@ -250,6 +267,15 @@ output "test" { provider "scaffolding" { # example configuration here } +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} -- examples/resources/scaffolding_example/resource.tf -- resource "scaffolding_example" "example" { configurable_attribute = "some-value" diff --git a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_static_files.txtar b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_static_files.txtar index f37cdfc..a082d55 100644 --- a/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_static_files.txtar +++ b/cmd/tfplugindocs/testdata/scripts/schema-json/generate/framework_provider_success_static_files.txtar @@ -193,11 +193,20 @@ resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/ephemeral-resources/scaffolding_example/ephemeral-resource.tf -- +resource "scaffolding_example" "example" { + configurable_attribute = "some-value" +} +-- examples/resources/scaffolding_example/import-by-string-id.tf -- +import { + to = scaffolding_example.example + id = "id-123" +} + resource "scaffolding_example" "example" { configurable_attribute = "some-value" } -- examples/resources/scaffolding_example/import.sh -- -terraform import scaffolding_example.example +terraform import scaffolding_example.example "id-123" -- schema.json -- { "format_version": "1.0", diff --git a/internal/provider/generate.go b/internal/provider/generate.go index 3b814b8..5fe68a4 100644 --- a/internal/provider/generate.go +++ b/internal/provider/generate.go @@ -629,7 +629,7 @@ func (g *generator) renderStaticWebsite(providerSchema *tfjson.ProviderSchema) e if resSchema != nil { tmpl := resourceTemplate(tmplData) - render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Data Source", exampleFilePath, "", resSchema) + render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Data Source", exampleFilePath, "", "", resSchema) if err != nil { return fmt.Errorf("unable to render data source template %q: %w", rel, err) } @@ -644,10 +644,11 @@ func (g *generator) renderStaticWebsite(providerSchema *tfjson.ProviderSchema) e resSchema, resName := resourceSchema(providerSchema.ResourceSchemas, shortName, relFile) exampleFilePath := filepath.Join(g.ProviderExamplesDir(), "resources", resName, "resource.tf") importFilePath := filepath.Join(g.ProviderExamplesDir(), "resources", resName, "import.sh") + importIDConfigFilePath := filepath.Join(g.ProviderExamplesDir(), "resources", resName, "import-by-string-id.tf") if resSchema != nil { tmpl := resourceTemplate(tmplData) - render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Resource", exampleFilePath, importFilePath, resSchema) + render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Resource", exampleFilePath, importIDConfigFilePath, importFilePath, resSchema) if err != nil { return fmt.Errorf("unable to render resource template %q: %w", rel, err) } @@ -682,7 +683,7 @@ func (g *generator) renderStaticWebsite(providerSchema *tfjson.ProviderSchema) e if resSchema != nil { tmpl := resourceTemplate(tmplData) - render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Ephemeral Resource", exampleFilePath, "", resSchema) + render, err := tmpl.Render(g.providerDir, resName, g.providerName, g.renderedProviderName, "Ephemeral Resource", exampleFilePath, "", "", resSchema) if err != nil { return fmt.Errorf("unable to render ephemeral resource template %q: %w", rel, err) } diff --git a/internal/provider/template.go b/internal/provider/template.go index 2be400e..e77792d 100644 --- a/internal/provider/template.go +++ b/internal/provider/template.go @@ -158,7 +158,7 @@ func (t providerTemplate) Render(providerDir, providerName, renderedProviderName }) } -func (t resourceTemplate) Render(providerDir, name, providerName, renderedProviderName, typeName, exampleFile, importFile string, schema *tfjson.Schema) (string, error) { +func (t resourceTemplate) Render(providerDir, name, providerName, renderedProviderName, typeName, exampleFile, importIDConfigFile, importCmdFile string, schema *tfjson.Schema) (string, error) { schemaBuffer := bytes.NewBuffer(nil) err := schemamd.Render(schema, schemaBuffer) if err != nil { @@ -181,6 +181,9 @@ func (t resourceTemplate) Render(providerDir, name, providerName, renderedProvid HasImport bool ImportFile string + HasImportIDConfig bool + ImportIDConfigFile string + ProviderName string ProviderShortName string @@ -195,8 +198,11 @@ func (t resourceTemplate) Render(providerDir, name, providerName, renderedProvid HasExample: exampleFile != "" && fileExists(exampleFile), ExampleFile: exampleFile, - HasImport: importFile != "" && fileExists(importFile), - ImportFile: importFile, + HasImport: importCmdFile != "" && fileExists(importCmdFile), + ImportFile: importCmdFile, + + HasImportIDConfig: importIDConfigFile != "" && fileExists(importIDConfigFile), + ImportIDConfigFile: importIDConfigFile, ProviderName: providerName, ProviderShortName: providerShortName(renderedProviderName), @@ -288,11 +294,21 @@ description: |- {{- end }} {{ .SchemaMarkdown | trimspace }} -{{- if .HasImport }} +{{- if or .HasImport .HasImportIDConfig }} ## Import Import is supported using the following syntax: +{{- end }} +{{- if .HasImportIDConfig }} + +In Terraform v1.5.0 and later, the [` + "`" + `import` + "`" + ` block](https://developer.hashicorp.com/terraform/language/import) can be used with the ` + "`" + `id` + "`" + ` attribute, for example: + +{{tffile .ImportIDConfigFile }} +{{- end }} +{{- if .HasImport }} + +The [` + "`" + `terraform import` + "`" + ` command](https://developer.hashicorp.com/terraform/cli/commands/import) can be used, for example: {{codefile "shell" .ImportFile }} {{- end }} diff --git a/internal/provider/template_test.go b/internal/provider/template_test.go index 82bcc3b..3760b94 100644 --- a/internal/provider/template_test.go +++ b/internal/provider/template_test.go @@ -93,7 +93,7 @@ provider "scaffolding" { }, } - result, err := tpl.Render("testdata/test-provider-dir", "testTemplate", "test-provider", "test-provider", "Resource", "provider.tf", "provider.tf", &schema) + result, err := tpl.Render("testdata/test-provider-dir", "testTemplate", "test-provider", "test-provider", "Resource", "provider.tf", "", "", &schema) if err != nil { t.Error(err) }