func()

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
}