@@ -2,11 +2,12 @@ package docs
22
33import (
44 "bytes"
5+ "errors"
56 "fmt"
7+ "io"
68 "log"
79 "os"
810 "path/filepath"
9- "strings"
1011 "text/template"
1112
1213 "github.com/opendevstack/ods-pipeline/internal/command"
@@ -37,20 +38,11 @@ func renderTemplate(targetDir, targetFilename string, data Task) error {
3738 if err != nil {
3839 return err
3940 }
40- templateFilename := filepath .Join (targetDir , "template.adoc.tmpl" )
41- templateFileParts := strings .Split (templateFilename , "/" )
42- templateDisplayname := templateFileParts [len (templateFileParts )- 1 ]
43- _ , err = targetFile .WriteString (
44- "// Document generated by internal/documentation/tasks.go from " + templateDisplayname + "; DO NOT EDIT.\n \n " ,
45- )
41+ tmpl , err := template .ParseFiles (filepath .Join (targetDir , "template.adoc.tmpl" ))
4642 if err != nil {
4743 return err
4844 }
49- tmpl , err := template .ParseFiles (templateFilename )
50- if err != nil {
51- return err
52- }
53- return tmpl .Execute (targetFile , data )
45+ return RenderTaskDocumentation (targetFile , tmpl , & data )
5446}
5547
5648func parseTasks (helmTemplateOutput []byte ) ([]* tekton.Task , error ) {
@@ -131,3 +123,47 @@ func RenderTasks(tasksSourceDir, descriptionsSourceDir, targetDir string) error
131123 }
132124 return nil
133125}
126+
127+ func ParseTask (f []byte , desc []byte ) (* Task , error ) {
128+ var t tekton.Task
129+ err := yaml .Unmarshal (f , & t )
130+ if err != nil {
131+ return nil , err
132+ }
133+ if t .Name == "" {
134+ return nil , errors .New ("encountered empty name, something is wrong with the task" )
135+ }
136+ task := & Task {
137+ Name : t .Name ,
138+ Description : string (desc ),
139+ Params : []Param {},
140+ Results : []Result {},
141+ }
142+ for _ , p := range t .Spec .Params {
143+ defaultValue := ""
144+ if p .Default != nil {
145+ defaultValue = p .Default .StringVal
146+ }
147+ task .Params = append (task .Params , Param {
148+ Name : p .Name ,
149+ Default : defaultValue ,
150+ Description : p .Description ,
151+ })
152+ }
153+ for _ , r := range t .Spec .Results {
154+ task .Results = append (task .Results , Result {
155+ Name : r .Name ,
156+ Description : r .Description ,
157+ })
158+ }
159+ return task , nil
160+ }
161+
162+ func RenderTaskDocumentation (w io.Writer , tmpl * template.Template , task * Task ) error {
163+ if _ , err := w .Write (
164+ []byte ("// File is generated; DO NOT EDIT.\n \n " ),
165+ ); err != nil {
166+ return err
167+ }
168+ return tmpl .Execute (w , task )
169+ }
0 commit comments