Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/generate: allow HasExample and HasImport to function #155

Merged
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 15 additions & 5 deletions README.md
Expand Up @@ -44,20 +44,30 @@ Otherwise, the provider developer can set an arbitrary description like this:

### Conventional Paths

The generation of missing documentation is based on a number of assumptions / conventional paths:
The generation of missing documentation is based on a number of assumptions / conventional paths.

For templates:

| Path | Description |
|-----------------------------------------------------------|----------------------------------------|
| `templates/` | Root of templated docs |
| `templates/index.md[.tmpl]` | Docs index page (or template) |
| `examples/provider/provider.tf` | Provider example config* |
| `templates/data-sources.md[.tmpl]` | Generic data source page (or template) |
| `templates/data-sources/<data source name>.md[.tmpl]` | Data source page (or template) |
| `examples/data-sources/<data source name>/data-source.tf` | Data source example config* |
| `templates/resources.md[.tmpl]` | Generic resource page (or template) |
| `templates/resources/<resource name>.md[.tmpl]` | Resource page (or template) |
| `examples/resources/<resource name>/resource.tf` | Resource example config* |
| `examples/resources/<resource name>/import.sh` | Resource example import command |

Note: the `.tmpl` extension is necessary, for the file to be correctly handled as a template.

For examples:

| Path | Description |
|-----------------------------------------------------------|---------------------------------|
| `examples/` | Root of examples |
| `examples/provider/provider.tf` | Provider example config |
| `examples/data-sources/<data source name>/data-source.tf` | Data source example config |
| `examples/resources/<resource name>/resource.tf` | Resource example config |
| `examples/resources/<resource name>/import.sh` | Resource example import command |

### Templates

Expand Down
11 changes: 8 additions & 3 deletions internal/provider/generate.go
Expand Up @@ -415,9 +415,10 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
switch relDir {
case "data-sources/":
resSchema, resName := resourceSchema(providerSchema.DataSourceSchemas, shortName, relFile)
exampleFilePath := filepath.Join(g.examplesDir, "data-sources", resName, "data-source.tf")
if resSchema != nil {
tmpl := resourceTemplate(tmplData)
render, err := tmpl.Render(resName, providerName, g.renderedProviderName, "Data Source", "", "", resSchema)
render, err := tmpl.Render(resName, providerName, g.renderedProviderName, "Data Source", exampleFilePath, "", resSchema)
jacobbednarz marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return fmt.Errorf("unable to render data source template %q: %w", rel, err)
}
Expand All @@ -430,9 +431,12 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
g.warnf("data source entitled %q, or %q does not exist", shortName, resName)
case "resources/":
resSchema, resName := resourceSchema(providerSchema.ResourceSchemas, shortName, relFile)
exampleFilePath := filepath.Join(g.examplesDir, "resources", resName, "resource.tf")
importFilePath := filepath.Join(g.examplesDir, "resources", resName, "import.sh")

if resSchema != nil {
tmpl := resourceTemplate(tmplData)
render, err := tmpl.Render(resName, providerName, g.renderedProviderName, "Resource", "", "", resSchema)
render, err := tmpl.Render(resName, providerName, g.renderedProviderName, "Resource", exampleFilePath, importFilePath, resSchema)
if err != nil {
return fmt.Errorf("unable to render resource template %q: %w", rel, err)
}
Expand All @@ -446,7 +450,8 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
case "": // provider
if relFile == "index.md.tmpl" {
tmpl := providerTemplate(tmplData)
render, err := tmpl.Render(providerName, g.renderedProviderName, "", providerSchema.ConfigSchema)
exampleFilePath := filepath.Join(g.examplesDir, "provider", "provider.tf")
jacobbednarz marked this conversation as resolved.
Show resolved Hide resolved
render, err := tmpl.Render(providerName, g.renderedProviderName, exampleFilePath, providerSchema.ConfigSchema)
if err != nil {
return fmt.Errorf("unable to render provider template %q: %w", rel, err)
}
Expand Down