github.com/codyleyhan/gqlgen@v0.4.4/codegen/templates/inliner/inliner.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"strconv"
     7  	"strings"
     8  
     9  	"golang.org/x/tools/imports"
    10  )
    11  
    12  func main() {
    13  	dir := "./"
    14  
    15  	files, err := ioutil.ReadDir(dir)
    16  	if err != nil {
    17  		panic(err)
    18  	}
    19  
    20  	out := bytes.Buffer{}
    21  	out.WriteString("package templates\n\n")
    22  	out.WriteString("var data = map[string]string{\n")
    23  
    24  	for _, f := range files {
    25  		if !strings.HasSuffix(f.Name(), ".gotpl") {
    26  			continue
    27  		}
    28  
    29  		b, err := ioutil.ReadFile(dir + f.Name())
    30  		if err != nil {
    31  			panic(err)
    32  		}
    33  
    34  		out.WriteString(strconv.Quote(f.Name()))
    35  		out.WriteRune(':')
    36  		out.WriteString(strconv.Quote(string(b)))
    37  		out.WriteString(",\n")
    38  	}
    39  
    40  	out.WriteString("}\n")
    41  
    42  	formatted, err2 := imports.Process(dir+"data.go", out.Bytes(), nil)
    43  	if err2 != nil {
    44  		panic(err2)
    45  	}
    46  
    47  	ioutil.WriteFile(dir+"data.go", formatted, 0644)
    48  }