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  }