@@ -22,25 +22,12 @@ import (
22
22
"github.com/mitchellh/cli"
23
23
)
24
24
25
- // TODO: convert these to flags?
26
25
var (
27
- providerName string
28
-
29
- // rendered website dir
30
- renderedWebsiteDir = "docs"
31
-
32
- // examples directory defaults
33
- examplesDir = "examples"
34
- // relative to examples dir
35
26
examplesResourceFileTemplate = resourceFileTemplate ("resources/{{.Name}}/resource.tf" )
36
27
examplesResourceImportTemplate = resourceFileTemplate ("resources/{{.Name}}/import.sh" )
37
28
examplesDataSourceFileTemplate = resourceFileTemplate ("data-sources/{{ .Name }}/data-source.tf" )
38
29
examplesProviderFileTemplate = providerFileTemplate ("provider/provider.tf" )
39
30
40
- // templated website directory defaults
41
- websiteTmp = ""
42
-
43
- websiteSourceDir = "templates" // used for override content
44
31
websiteResourceFileTemplate = resourceFileTemplate ("resources/{{ .ShortName }}.md.tmpl" )
45
32
websiteResourceFallbackFileTemplate = resourceFileTemplate ("resources.md.tmpl" )
46
33
websiteResourceFileStatic = []resourceFileTemplate {
@@ -80,6 +67,13 @@ type generator struct {
80
67
legacySidebar bool
81
68
tfVersion string
82
69
70
+ providerName string
71
+ renderedProviderName string
72
+ renderedWebsiteDir string
73
+ examplesDir string
74
+ websiteTmpDir string
75
+ websiteSourceDir string
76
+
83
77
ui cli.Ui
84
78
}
85
79
@@ -91,11 +85,18 @@ func (g *generator) warnf(format string, a ...interface{}) {
91
85
g .ui .Warn (fmt .Sprintf (format , a ... ))
92
86
}
93
87
94
- func Generate (ui cli.Ui , legacySidebar bool , tfVersion string ) error {
88
+ func Generate (ui cli.Ui , legacySidebar bool , providerName , renderedProviderName , renderedWebsiteDir , examplesDir , websiteTmpDir , websiteSourceDir , tfVersion string ) error {
95
89
g := & generator {
96
90
legacySidebar : legacySidebar ,
97
91
tfVersion : tfVersion ,
98
92
93
+ providerName : providerName ,
94
+ renderedProviderName : renderedProviderName ,
95
+ renderedWebsiteDir : renderedWebsiteDir ,
96
+ examplesDir : examplesDir ,
97
+ websiteTmpDir : websiteTmpDir ,
98
+ websiteSourceDir : websiteSourceDir ,
99
+
99
100
ui : ui ,
100
101
}
101
102
@@ -112,46 +113,51 @@ func (g *generator) Generate(ctx context.Context) error {
112
113
return err
113
114
}
114
115
115
- if providerName == "" {
116
+ providerName := g .providerName
117
+ if g .providerName == "" {
116
118
providerName = filepath .Base (wd )
117
119
}
118
120
119
- g .infof ("rendering website for provider %q" , providerName )
121
+ if g .renderedProviderName == "" {
122
+ g .renderedProviderName = providerName
123
+ }
124
+
125
+ g .infof ("rendering website for provider %q (as %q)" , providerName , g .renderedProviderName )
120
126
121
127
switch {
122
- case websiteTmp == "" :
123
- websiteTmp , err = ioutil .TempDir ("" , "tfws" )
128
+ case g . websiteTmpDir == "" :
129
+ g . websiteTmpDir , err = ioutil .TempDir ("" , "tfws" )
124
130
if err != nil {
125
131
return err
126
132
}
127
- defer os .RemoveAll (websiteTmp )
133
+ defer os .RemoveAll (g . websiteTmpDir )
128
134
default :
129
- g .infof ("cleaning tmp dir %q" , websiteTmp )
130
- err = os .RemoveAll (websiteTmp )
135
+ g .infof ("cleaning tmp dir %q" , g . websiteTmpDir )
136
+ err = os .RemoveAll (g . websiteTmpDir )
131
137
if err != nil {
132
138
return err
133
139
}
134
140
135
- g .infof ("creating tmp dir %q" , websiteTmp )
136
- err = os .MkdirAll (websiteTmp , 0755 )
141
+ g .infof ("creating tmp dir %q" , g . websiteTmpDir )
142
+ err = os .MkdirAll (g . websiteTmpDir , 0755 )
137
143
if err != nil {
138
144
return err
139
145
}
140
146
}
141
147
142
- websiteSourceDirInfo , err := os .Stat (websiteSourceDir )
148
+ websiteSourceDirInfo , err := os .Stat (g . websiteSourceDir )
143
149
switch {
144
150
case os .IsNotExist (err ):
145
151
// do nothing, no template dir
146
152
case err != nil :
147
153
return err
148
154
default :
149
155
if ! websiteSourceDirInfo .IsDir () {
150
- return fmt .Errorf ("template path is not a directory: %s" , websiteSourceDir )
156
+ return fmt .Errorf ("template path is not a directory: %s" , g . websiteSourceDir )
151
157
}
152
158
153
159
g .infof ("copying any existing content to tmp dir" )
154
- err = cp (websiteSourceDir , filepath .Join (websiteTmp , "templates" ))
160
+ err = cp (g . websiteSourceDir , filepath .Join (g . websiteTmpDir , "templates" ))
155
161
if err != nil {
156
162
return err
157
163
}
@@ -164,13 +170,13 @@ func (g *generator) Generate(ctx context.Context) error {
164
170
}
165
171
166
172
g .infof ("rendering missing docs" )
167
- err = g .renderMissingDocs (providerName , providerSchema )
173
+ err = g .renderMissingDocs (g . renderedProviderName , providerSchema )
168
174
if err != nil {
169
175
return err
170
176
}
171
177
172
178
g .infof ("rendering static website" )
173
- err = g .renderStaticWebsite (providerName , providerSchema )
179
+ err = g .renderStaticWebsite (g . renderedProviderName , providerSchema )
174
180
if err != nil {
175
181
return err
176
182
}
@@ -189,7 +195,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
189
195
if err != nil {
190
196
return fmt .Errorf ("unable to render path for resource %q: %w" , name , err )
191
197
}
192
- tmplPath = filepath .Join (websiteTmp , websiteSourceDir , tmplPath )
198
+ tmplPath = filepath .Join (g . websiteTmpDir , g . websiteSourceDir , tmplPath )
193
199
if fileExists (tmplPath ) {
194
200
g .infof ("resource %q template exists, skipping" , name )
195
201
return nil
@@ -200,7 +206,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
200
206
if err != nil {
201
207
return fmt .Errorf ("unable to render path for resource %q: %w" , name , err )
202
208
}
203
- candidatePath = filepath .Join (websiteTmp , websiteSourceDir , candidatePath )
209
+ candidatePath = filepath .Join (g . websiteTmpDir , g . websiteSourceDir , candidatePath )
204
210
if fileExists (candidatePath ) {
205
211
g .infof ("resource %q static file exists, skipping" , name )
206
212
return nil
@@ -212,7 +218,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
212
218
return fmt .Errorf ("unable to render example file path for %q: %w" , name , err )
213
219
}
214
220
if examplePath != "" {
215
- examplePath = filepath .Join (examplesDir , examplePath )
221
+ examplePath = filepath .Join (g . examplesDir , examplePath )
216
222
}
217
223
if ! fileExists (examplePath ) {
218
224
examplePath = ""
@@ -225,7 +231,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
225
231
return fmt .Errorf ("unable to render example import file path for %q: %w" , name , err )
226
232
}
227
233
if importPath != "" {
228
- importPath = filepath .Join (examplesDir , importPath )
234
+ importPath = filepath .Join (g . examplesDir , importPath )
229
235
}
230
236
if ! fileExists (importPath ) {
231
237
importPath = ""
@@ -238,7 +244,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
238
244
if err != nil {
239
245
return fmt .Errorf ("unable to render path for resource %q: %w" , name , err )
240
246
}
241
- fallbackTmplPath = filepath .Join (websiteTmp , websiteSourceDir , fallbackTmplPath )
247
+ fallbackTmplPath = filepath .Join (g . websiteTmpDir , g . websiteSourceDir , fallbackTmplPath )
242
248
if fileExists (fallbackTmplPath ) {
243
249
g .infof ("resource %q fallback template exists" , name )
244
250
tmplData , err := ioutil .ReadFile (fallbackTmplPath )
@@ -267,7 +273,7 @@ func (g *generator) renderMissingProviderDoc(providerName string, schema *tfjson
267
273
if err != nil {
268
274
return fmt .Errorf ("unable to render path for provider %q: %w" , providerName , err )
269
275
}
270
- tmplPath = filepath .Join (websiteTmp , websiteSourceDir , tmplPath )
276
+ tmplPath = filepath .Join (g . websiteTmpDir , g . websiteSourceDir , tmplPath )
271
277
if fileExists (tmplPath ) {
272
278
g .infof ("provider %q template exists, skipping" , providerName )
273
279
return nil
@@ -278,7 +284,7 @@ func (g *generator) renderMissingProviderDoc(providerName string, schema *tfjson
278
284
if err != nil {
279
285
return fmt .Errorf ("unable to render path for provider %q: %w" , providerName , err )
280
286
}
281
- candidatePath = filepath .Join (websiteTmp , websiteSourceDir , candidatePath )
287
+ candidatePath = filepath .Join (g . websiteTmpDir , g . websiteSourceDir , candidatePath )
282
288
if fileExists (candidatePath ) {
283
289
g .infof ("provider %q static file exists, skipping" , providerName )
284
290
return nil
@@ -290,7 +296,7 @@ func (g *generator) renderMissingProviderDoc(providerName string, schema *tfjson
290
296
return fmt .Errorf ("unable to render example file path for %q: %w" , providerName , err )
291
297
}
292
298
if examplePath != "" {
293
- examplePath = filepath .Join (examplesDir , examplePath )
299
+ examplePath = filepath .Join (g . examplesDir , examplePath )
294
300
}
295
301
if ! fileExists (examplePath ) {
296
302
examplePath = ""
@@ -352,7 +358,7 @@ func (g *generator) renderMissingDocs(providerName string, providerSchema *tfjso
352
358
353
359
func (g * generator ) renderStaticWebsite (providerName string , providerSchema * tfjson.ProviderSchema ) error {
354
360
g .infof ("cleaning rendered website dir" )
355
- err := os .RemoveAll (renderedWebsiteDir )
361
+ err := os .RemoveAll (g . renderedWebsiteDir )
356
362
if err != nil {
357
363
return err
358
364
}
@@ -361,13 +367,13 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
361
367
362
368
g .infof ("rendering templated website to static markdown" )
363
369
364
- err = filepath .Walk (websiteTmp , func (path string , info os.FileInfo , err error ) error {
370
+ err = filepath .Walk (g . websiteTmpDir , func (path string , info os.FileInfo , err error ) error {
365
371
if info .IsDir () {
366
372
// skip directories
367
373
return nil
368
374
}
369
375
370
- rel , err := filepath .Rel (filepath .Join (websiteTmp , websiteSourceDir ), path )
376
+ rel , err := filepath .Rel (filepath .Join (g . websiteTmpDir , g . websiteSourceDir ), path )
371
377
if err != nil {
372
378
return err
373
379
}
@@ -380,7 +386,7 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
380
386
return nil
381
387
}
382
388
383
- renderedPath := filepath .Join (renderedWebsiteDir , rel )
389
+ renderedPath := filepath .Join (g . renderedWebsiteDir , rel )
384
390
err = os .MkdirAll (filepath .Dir (renderedPath ), 0755 )
385
391
if err != nil {
386
392
return err
0 commit comments