func ComponentPatchTemplates()

in pkg/build/patchbuild.go [89:125]


func ComponentPatchTemplates(c *bundle.Component, fopts *filter.Options, opts options.JSONOptions) (*bundle.Component, error) {
	ptbFilter := fopts
	if ptbFilter == nil {
		ptbFilter = &filter.Options{}
	}
	ptbFilter.Kinds = []string{`PatchTemplateBuilder`}

	f := filter.NewFilter()
	// select all patch template builders that match the filter
	ptbs, objs := f.PartitionObjects(c.Spec.Objects, ptbFilter)
	c.Spec.Objects = objs

	// loop through each and generate a patch template
	for _, obj := range ptbs {
		var ptb bundle.PatchTemplateBuilder
		err := converter.FromUnstructured(obj).ToObject(&ptb)
		if err != nil {
			return nil, err
		}

		pt, err := PatchTemplate(&ptb, opts)
		if err != nil {
			return nil, err
		}
		y, err := converter.FromObject(pt).ToYAML()
		if err != nil {
			return nil, err
		}
		o, err := converter.FromYAML(y).ToUnstructured()
		if err != nil {
			return nil, err
		}
		c.Spec.Objects = append(c.Spec.Objects, o)
	}

	return c, nil
}