func()

in pkg/function/outputs.go [45:82]


func (w *OutputWriter) Add(outs ...client.Object) error {
	if w.committed {
		return fmt.Errorf("cannot add to a committed output")
	}

	// Doing a "filter" to avoid committing nil values.
	for _, o := range outs {
		if o == nil {
			continue
		}

		// Resolve GVK if needed
		if o.GetObjectKind().GroupVersionKind().Empty() {
			gvks, _, err := Scheme.ObjectKinds(o)
			if err != nil || len(gvks) == 0 {
				return fmt.Errorf("unable to determine GVK for object %s: %w", o.GetName(), err)
			}
			o.GetObjectKind().SetGroupVersionKind(gvks[0])
		}

		// Encode
		obj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(o)
		if err != nil {
			return fmt.Errorf(
				"converting %s %s to unstructured: %w",
				o.GetName(),
				o.GetObjectKind().GroupVersionKind().Kind,
				err,
			)
		}
		u := &unstructured.Unstructured{Object: obj}
		if w.munge != nil {
			w.munge(u)
		}
		w.outputs = append(w.outputs, u)
	}
	return nil
}