in tpgtools/main.go [298:346]
func generateSerializationLogic(specs map[Version][]*Resource) {
buf := bytes.Buffer{}
tmpl, err := template.New("serialization.go.tmpl").Funcs(TemplateFunctions).ParseFiles(
"templates/serialization.go.tmpl",
)
if err != nil {
glog.Exit(err)
}
packageMap := make(map[string]string)
for v, resList := range specs {
for _, res := range resList {
var pkgName, pkgPath string
pkgName = res.Package().lowercase() + v.SerializationSuffix
if v == GA_VERSION {
pkgPath = res.Package().lowercase()
} else {
pkgPath = path.Join(res.Package().lowercase(), v.V)
}
if _, ok := packageMap[pkgPath]; !ok {
packageMap[pkgName] = pkgPath
}
}
}
tmplInput := SerializationInput{
Resources: specs,
Packages: packageMap,
}
if err = tmpl.ExecuteTemplate(&buf, "serialization.go.tmpl", tmplInput); err != nil {
glog.Exit(err)
}
formatted, err := formatSource(&buf)
if err != nil {
glog.Error(fmt.Errorf("error formatting serialization logic: %v", err))
}
if oPath == nil || *oPath == "" {
fmt.Printf("%v", string(formatted))
} else {
err := ioutil.WriteFile(path.Join(*oPath, "serialization.go"), formatted, 0644)
if err != nil {
glog.Exit(err)
}
}
}