package generator import ( "bytes" "io" "text/template" yaml "gopkg.in/yaml.v2" ) // Vendor reads from buf and builds source file from vendorTmplPath. func Vendor(data []byte, vendorTmplPath, vendorTmplName, commit string) ([]byte, error) { var regexpList []string if err := yaml.Unmarshal(data, ®expList); err != nil { return nil, err } buf := &bytes.Buffer{} if err := executeVendorTemplate(buf, regexpList, vendorTmplPath, vendorTmplName, commit); err != nil { return nil, err } return buf.Bytes(), nil } func executeVendorTemplate(out io.Writer, regexpList []string, vendorTmplPath, vendorTmpl, commit string) error { fmap := template.FuncMap{ "getCommit": func() string { return commit }, } t := template.Must(template.New(vendorTmpl).Funcs(fmap).ParseFiles(vendorTmplPath)) if err := t.Execute(out, regexpList); err != nil { return err } return nil }