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  }