github.com/SAP/cloud-mta-build-tool@v1.2.27/internal/buildtools/embed.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "text/template" 10 11 "github.com/SAP/cloud-mta-build-tool/internal/archive" 12 "github.com/pkg/errors" 13 ) 14 15 type configInfo struct { 16 PackageName string 17 VarName string 18 Data string 19 } 20 21 var templatePath = "./internal/buildtools" 22 23 // This code is executed during the go:generate command 24 // Reading the config files and generate byte array 25 func main() { 26 // define commands for execution 27 inFile := flag.String("source", "", "source") 28 outFile := flag.String("target", "", "target") 29 pkg := flag.String("package", "main", "package name") 30 name := flag.String("name", "File", "identifier to use for the embedded data") 31 flag.Parse() 32 err := genConf(*inFile, *outFile, *pkg, *name) 33 handleError(err) 34 } 35 36 func genConf(source string, target, packageName, varName string) (e error) { 37 // Read the config file 38 inData, err := ioutil.ReadFile(source) 39 if err != nil { 40 return errors.Wrapf(err, readFailedMsg, source) 41 } 42 out, err := os.Create(target) 43 defer func() { 44 e = dir.CloseFile(out, e) 45 }() 46 if err != nil { 47 return errors.Wrapf(err, createFailedMsg, target) 48 } 49 t := template.Must(template.New("config.tpl").ParseFiles(filepath.Join(templatePath, "config.tpl"))) 50 err = t.Execute(out, configInfo{PackageName: packageName, VarName: varName, Data: fmt.Sprintf("%#v", inData)}) 51 if err != nil { 52 return errors.Wrapf(err, populationFailedMsg) 53 } 54 return nil 55 } 56 57 func handleError(err error) { 58 if err != nil { 59 fmt.Println(err.Error()) 60 panic(err.Error()) 61 } 62 }