github.com/frostornge/solgen@v0.1.3/proto/template.go (about) 1 package proto 2 3 import ( 4 "bytes" 5 "html/template" 6 "io" 7 "os" 8 ) 9 10 const templatePath = "./proto/templates/*" 11 12 func render(writer io.Writer, c contract) error { 13 tmpl := template.Must(template.New("Bind").ParseGlob(templatePath)) 14 if err := tmpl.ExecuteTemplate(writer, "Bind", c); err != nil { 15 return err 16 } 17 return nil 18 } 19 20 func Render(c contract) ([]byte, error) { 21 buffer := new(bytes.Buffer) 22 if err := render(buffer, c); err != nil { 23 return nil, err 24 } 25 return buffer.Bytes(), nil 26 } 27 28 func RenderFile(path string, c contract) error { 29 var out *os.File 30 if _, err := os.Stat(path); os.IsNotExist(err) { 31 out, err = os.Create(path) 32 if err != nil { 33 return err 34 } 35 } else { 36 out, err = os.OpenFile(path, os.O_WRONLY, os.ModePerm) 37 if err != nil { 38 return err 39 } 40 } 41 return render(out, c) 42 }