Skip to content

Commit eadddf2

Browse files
committed
Add template context for provider, res, data source docs
1 parent 6668ff1 commit eadddf2

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed

internal/provider/generate.go

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (g *generator) Generate(ctx context.Context) error {
157157
return err
158158
}
159159

160-
err = g.renderStaticWebsite()
160+
err = g.renderStaticWebsite(providerName, providerSchema)
161161
if err != nil {
162162
return err
163163
}
@@ -319,7 +319,7 @@ func (g *generator) renderMissingDocs(providerName string, providerSchema *tfjso
319319
return nil
320320
}
321321

322-
func (g *generator) renderStaticWebsite() error {
322+
func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfjson.ProviderSchema) error {
323323
g.infof("cleaning rendered website dir")
324324
err := os.RemoveAll(renderedWebsiteDir)
325325
if err != nil {
@@ -357,7 +357,6 @@ func (g *generator) renderStaticWebsite() error {
357357
if err != nil {
358358
return fmt.Errorf("unable to read file %q: %w", rel, err)
359359
}
360-
tmpl := docTemplate(tmplData)
361360

362361
out, err := os.Create(renderedPath)
363362
if err != nil {
@@ -366,11 +365,59 @@ func (g *generator) renderStaticWebsite() error {
366365
defer out.Close()
367366

368367
g.infof("rendering %q", rel)
368+
369+
relDir, relFile := filepath.Split(rel)
370+
switch relDir {
371+
case "data-sources":
372+
resName := removeAllExt(relFile)
373+
resSchema, ok := providerSchema.DataSourceSchemas[resName]
374+
if ok {
375+
tmpl := resourceTemplate(tmplData)
376+
render, err := tmpl.Render("Data Source", providerName, resName, "", "", resSchema)
377+
if err != nil {
378+
return fmt.Errorf("unable to render data source template %q: %w", rel, err)
379+
}
380+
_, err = out.WriteString(render)
381+
if err != nil {
382+
return fmt.Errorf("unable to write rendered string: %w", err)
383+
}
384+
return nil
385+
}
386+
case "resources":
387+
resName := removeAllExt(relFile)
388+
resSchema, ok := providerSchema.ResourceSchemas[resName]
389+
if ok {
390+
tmpl := resourceTemplate(tmplData)
391+
render, err := tmpl.Render("Resource", providerName, resName, "", "", resSchema)
392+
if err != nil {
393+
return fmt.Errorf("unable to render resource template %q: %w", rel, err)
394+
}
395+
_, err = out.WriteString(render)
396+
if err != nil {
397+
return fmt.Errorf("unable to write regindered string: %w", err)
398+
}
399+
return nil
400+
}
401+
case "": // provider
402+
if relFile == "index.md.tmpl" {
403+
tmpl := providerTemplate(tmplData)
404+
render, err := tmpl.Render(providerName, "", providerSchema.ConfigSchema)
405+
if err != nil {
406+
return fmt.Errorf("unable to render provider template %q: %w", rel, err)
407+
}
408+
_, err = out.WriteString(render)
409+
if err != nil {
410+
return fmt.Errorf("unable to write rendered string: %w", err)
411+
}
412+
return nil
413+
}
414+
}
415+
416+
tmpl := docTemplate(tmplData)
369417
err = tmpl.Render(out)
370418
if err != nil {
371419
return fmt.Errorf("unable to render template %q: %w", rel, err)
372420
}
373-
374421
return nil
375422
})
376423
if err != nil {

internal/provider/util.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ func resourceShortName(name, providerName string) string {
4646
// return os.Rename(tmp.Name(), dst)
4747
// }
4848

49+
func removeAllExt(file string) string {
50+
for {
51+
ext := filepath.Ext(file)
52+
if ext == "" || ext == file {
53+
return file
54+
}
55+
file = strings.TrimSuffix(file, ext)
56+
}
57+
}
58+
4959
func writeFile(path string, data string) error {
5060
dir, _ := filepath.Split(path)
5161
err := os.MkdirAll(dir, 0755)

0 commit comments

Comments
 (0)