github.com/ppphp/yayagf@v0.0.1/internal/blueprint/blueprint.go (about)

     1  package blueprint
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  	"path/filepath"
     8  	"text/template"
     9  )
    10  
    11  func WriteFileWithTmpl(path string, tmpl string, params interface{}) error {
    12  	tmp, err := template.New("").Parse(tmpl)
    13  	if err != nil {
    14  		return err
    15  	}
    16  	bts := &bytes.Buffer{}
    17  	if err := tmp.Execute(bts, params); err != nil {
    18  		return err
    19  	}
    20  	abs, err := filepath.Abs(path)
    21  	if err != nil {
    22  		return err
    23  	}
    24  	dir := filepath.Dir(abs)
    25  	if err := os.MkdirAll(dir, 0755); err != nil {
    26  		return err
    27  	}
    28  	if err := ioutil.WriteFile(abs, bts.Bytes(), 0644); err != nil {
    29  		return err
    30  	}
    31  	return nil
    32  }