in pkg/commands/patch/patch.go [54:92]
func run(ctx context.Context, o *options, brw cmdlib.BundleReaderWriter, rw files.FileReaderWriter, gopt *cmdlib.GlobalOptions) error {
bw, err := brw.ReadBundleData(ctx, gopt)
if err != nil {
return fmt.Errorf("error reading contents: %v", err)
}
optData, err := cmdlib.MergeOptions(ctx, rw, o.optionsFiles)
if err != nil {
return err
}
fopts := &filter.Options{Annotations: cmdlib.ParseStringMap(o.patchAnnotations)}
applier := patchtmpl.NewApplier(patchtmpl.DefaultPatcherScheme(), fopts, o.keepTemplates)
switch bw.Kind() {
case "Component":
comp, err := applier.ApplyOptions(bw.Component(), optData)
if err != nil {
return err
}
bw = wrapper.FromComponent(comp)
case "Bundle":
bun := bw.Bundle()
var comps []*bundle.Component
for _, comp := range bun.Components {
comp, err := applier.ApplyOptions(comp, optData)
if err != nil {
return err
}
comps = append(comps, comp)
}
bun.Components = comps
bw = wrapper.FromBundle(bun)
default:
return fmt.Errorf("bundle kind %q not supported for patching", bw.Kind())
}
return brw.WriteBundleData(ctx, bw, gopt)
}