mirror of
https://github.com/ralsina/tartrazine.git
synced 2025-06-27 14:47:50 -03:00
code-gen: improve ability to debug failures
Code generation failres were hard to identify and undertand * avoid unnececary re-formating & memory allocation * return clear formatting errors
This commit is contained in:
@ -3,7 +3,6 @@
|
|||||||
package generator
|
package generator
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/format"
|
"go/format"
|
||||||
"io"
|
"io"
|
||||||
@ -22,12 +21,15 @@ type File func(fileToParse, samplesDir, outPath, tmplPath, tmplName, commit stri
|
|||||||
func formatedWrite(outPath string, source []byte) error {
|
func formatedWrite(outPath string, source []byte) error {
|
||||||
formatedSource, err := format.Source(source)
|
formatedSource, err := format.Source(source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
err = fmt.Errorf("'go fmt' fails on %v", err)
|
||||||
|
// write un-formatter source to simplify debugging
|
||||||
|
formatedSource = source
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := ioutil.WriteFile(outPath, formatedSource, 0666); err != nil {
|
if err := ioutil.WriteFile(outPath, formatedSource, 0666); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func executeTemplate(w io.Writer, name, path, commit string, fmap template.FuncMap, data interface{}) error {
|
func executeTemplate(w io.Writer, name, path, commit string, fmap template.FuncMap, data interface{}) error {
|
||||||
@ -51,20 +53,10 @@ func executeTemplate(w io.Writer, name, path, commit string, fmap template.FuncM
|
|||||||
headerPath := filepath.Join(filepath.Dir(path), headerTmpl)
|
headerPath := filepath.Join(filepath.Dir(path), headerTmpl)
|
||||||
|
|
||||||
h := template.Must(template.New(headerTmpl).Funcs(fmap).ParseFiles(headerPath))
|
h := template.Must(template.New(headerTmpl).Funcs(fmap).ParseFiles(headerPath))
|
||||||
buf := bytes.NewBuffer(nil)
|
if err := h.Execute(w, data); err != nil {
|
||||||
if err := h.Execute(buf, data); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
t := template.Must(template.New(name).Funcs(fmap).ParseFiles(path))
|
t := template.Must(template.New(name).Funcs(fmap).ParseFiles(path))
|
||||||
if err := t.Execute(buf, data); err != nil {
|
return t.Execute(w, data)
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
src, err := format.Source(buf.Bytes())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
_, err = w.Write(src)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ func main() {
|
|||||||
|
|
||||||
for _, file := range fileList {
|
for _, file := range fileList {
|
||||||
if err := file.generate(file.fileToParse, file.samplesDir, file.outPath, file.tmplPath, file.tmplName, file.commit); err != nil {
|
if err := file.generate(file.fileToParse, file.samplesDir, file.outPath, file.tmplPath, file.tmplName, file.commit); err != nil {
|
||||||
log.Fatalf("error generating template %q to %q: %+v", file.tmplPath, file.outPath, err)
|
log.Fatalf("failed to generate %q from %q - %+v", file.outPath, file.tmplPath, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user