in pkg/bundle/patch/executor.go [219:270]
func applyPackagePatch(pkg *bundlev1.Package, p *bundlev1.PatchPackage, values map[string]interface{}) error {
// Check parameters
if pkg == nil {
return fmt.Errorf("cannot process nil package")
}
if p == nil {
return fmt.Errorf("cannot process nil patch")
}
// Patch concerns path
if p.Path != nil {
newPath, err := applyPackagePathPatch(pkg.Name, p.Path, values)
if err != nil {
return fmt.Errorf("unable to process `%s` name operations: %w", pkg.Name, err)
}
// Update package name
pkg.Name = newPath
}
// Patch concerns annotations
if p.Annotations != nil {
if pkg.Annotations == nil {
pkg.Annotations = map[string]string{}
}
if err := applyMapOperations(pkg.Annotations, p.Annotations, values); err != nil {
return fmt.Errorf("unable to process `%s` annotations: %w", pkg.Name, err)
}
}
// Patch concerns labels
if p.Labels != nil {
if pkg.Labels == nil {
pkg.Labels = map[string]string{}
}
if err := applyMapOperations(pkg.Labels, p.Labels, values); err != nil {
return fmt.Errorf("unable to process `%s` labels: %w", pkg.Name, err)
}
}
// Patch concerns data
if p.Data != nil {
if pkg.Secrets == nil {
pkg.Secrets = &bundlev1.SecretChain{}
}
if err := applySecretPatch(pkg.Secrets, p.Data, values); err != nil {
return fmt.Errorf("unable to apply patch to secret data for package `%s`: %w", pkg.Name, err)
}
}
return nil
}