in pkg/build/inline.go [275:326]
func (n *Inliner) templateFiles(ctx context.Context, tmplFiles []bundle.TemplateFileSet, ref bundle.ComponentReference, componentPath *url.URL, compMeta metav1.ObjectMeta) ([]*unstructured.Unstructured, error) {
var outObj []*unstructured.Unstructured
for _, tmplFileSet := range tmplFiles {
for _, tf := range tmplFileSet.Files {
furl, err := tf.ParsedURL()
if err != nil {
return nil, err
}
tf.URL = makeAbsWithParent(componentPath, furl).String()
contents, err := n.readFile(ctx, tf)
if err != nil {
return nil, fmt.Errorf("error reading file %v for component %v: %v", tf, ref, err)
}
// Note: metadata and optionsSchema are not supported with
// 'templateFiles' syntax.
objTemplate := &bundle.ObjectTemplate{
TypeMeta: metav1.TypeMeta{
APIVersion: "bundle.gke.io/v1alpha1",
Kind: "ObjectTemplate",
},
Template: string(contents),
}
objTemplate.ObjectMeta.Annotations = make(map[string]string)
objTemplate.ObjectMeta.Annotations[string(bundle.InlinePathIdentifier)] = tf.URL
if internal.HasSafeYAMLAnnotation(compMeta) {
objTemplate.ObjectMeta.Annotations[internal.SafeYAMLAnnotation] = compMeta.GetAnnotations()[internal.SafeYAMLAnnotation]
}
// templateType default is Go Template
tmplType := bundle.TemplateTypeGo
if tmplFileSet.TemplateType != bundle.TemplateTypeUndefined {
tmplType = tmplFileSet.TemplateType
}
objTemplate.Type = tmplType
objJSON, err := converter.FromObject(objTemplate).ToJSON()
if err != nil {
return nil, fmt.Errorf("for component %v and template file %q, while converting back to JSON: %v", ref, tf.URL, err)
}
unsObj, err := converter.FromJSON(objJSON).ToUnstructured()
if err != nil {
return nil, fmt.Errorf("for component %v and template file %q, while converting back to Unstructured: %v", ref, tf.URL, err)
}
outObj = append(outObj, unsObj)
}
}
return outObj, nil
}