diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cc8e495..10de8757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # 0.10.2 (Unreleased) +NEW FEATURES: + +* cmd/tfplugindocs: Additional CLI argument `ignore-deprecated` allows to skip deprecated resources and data-sources when generating docs ([#154](https://github.com/hashicorp/terraform-plugin-docs/pull/154)). + BUG FIXES: * cmd/tfplugindocs: Pass through filepaths for `examples` and `import` to allow use of `HasExample` and `HasImport` template helpers in custom templates ([#155](https://github.com/hashicorp/terraform-plugin-docs/pull/155)). diff --git a/internal/cmd/generate.go b/internal/cmd/generate.go index a48a94a2..54e4d201 100644 --- a/internal/cmd/generate.go +++ b/internal/cmd/generate.go @@ -11,7 +11,8 @@ import ( type generateCmd struct { commonCmd - flagLegacySidebar bool + flagLegacySidebar bool + flagIgnoreDeprecated bool flagProviderName string flagRenderedProviderName string @@ -75,6 +76,7 @@ func (cmd *generateCmd) Flags() *flag.FlagSet { fs.StringVar(&cmd.flagWebsiteTmpDir, "website-temp-dir", "", "temporary directory (used during generation)") fs.StringVar(&cmd.flagWebsiteSourceDir, "website-source-dir", "templates", "templates directory") fs.StringVar(&cmd.tfVersion, "tf-version", "", "terraform binary version to download") + fs.BoolVar(&cmd.flagIgnoreDeprecated, "ignore-deprecated", false, "don't generate documentation for deprecated resources and data-sources") return fs } @@ -100,6 +102,7 @@ func (cmd *generateCmd) runInternal() error { cmd.flagWebsiteTmpDir, cmd.flagWebsiteSourceDir, cmd.tfVersion, + cmd.flagIgnoreDeprecated, ) if err != nil { return fmt.Errorf("unable to generate website: %w", err) diff --git a/internal/provider/generate.go b/internal/provider/generate.go index 7641fd22..ce5a4b13 100644 --- a/internal/provider/generate.go +++ b/internal/provider/generate.go @@ -64,8 +64,9 @@ var ( ) type generator struct { - legacySidebar bool - tfVersion string + ignoreDeprecated bool + legacySidebar bool + tfVersion string providerName string renderedProviderName string @@ -85,10 +86,11 @@ func (g *generator) warnf(format string, a ...interface{}) { g.ui.Warn(fmt.Sprintf(format, a...)) } -func Generate(ui cli.Ui, legacySidebar bool, providerName, renderedProviderName, renderedWebsiteDir, examplesDir, websiteTmpDir, websiteSourceDir, tfVersion string) error { +func Generate(ui cli.Ui, legacySidebar bool, providerName, renderedProviderName, renderedWebsiteDir, examplesDir, websiteTmpDir, websiteSourceDir, tfVersion string, ignoreDeprecated bool) error { g := &generator{ - legacySidebar: legacySidebar, - tfVersion: tfVersion, + ignoreDeprecated: ignoreDeprecated, + legacySidebar: legacySidebar, + tfVersion: tfVersion, providerName: providerName, renderedProviderName: renderedProviderName, @@ -319,6 +321,10 @@ func (g *generator) renderMissingProviderDoc(providerName string, schema *tfjson func (g *generator) renderMissingDocs(providerName string, providerSchema *tfjson.ProviderSchema) error { g.infof("generating missing resource content") for name, schema := range providerSchema.ResourceSchemas { + if g.ignoreDeprecated && schema.Block.Deprecated { + continue + } + err := g.renderMissingResourceDoc(providerName, name, "Resource", schema, websiteResourceFileTemplate, websiteResourceFallbackFileTemplate, @@ -332,6 +338,10 @@ func (g *generator) renderMissingDocs(providerName string, providerSchema *tfjso g.infof("generating missing data source content") for name, schema := range providerSchema.DataSourceSchemas { + if g.ignoreDeprecated && schema.Block.Deprecated { + continue + } + err := g.renderMissingResourceDoc(providerName, name, "Data Source", schema, websiteDataSourceFileTemplate, websiteDataSourceFallbackFileTemplate,