mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 20:52:22 +00:00
92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package remove
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/pkg/errors"
|
|
"github.com/spf13/cobra"
|
|
"sigs.k8s.io/kustomize/v3/pkg/commands/edit/util"
|
|
"sigs.k8s.io/kustomize/v3/pkg/commands/kustfile"
|
|
"sigs.k8s.io/kustomize/v3/pkg/fs"
|
|
"sigs.k8s.io/kustomize/v3/pkg/patch"
|
|
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
|
|
)
|
|
|
|
type removePatchOptions struct {
|
|
patchFilePaths []string
|
|
}
|
|
|
|
// newCmdRemovePatch removes the name of a file containing a patch from the kustomization file.
|
|
func newCmdRemovePatch(fsys fs.FileSystem) *cobra.Command {
|
|
var o removePatchOptions
|
|
|
|
cmd := &cobra.Command{
|
|
Use: "patch",
|
|
Short: "Removes one or more patches from " + pgmconfig.KustomizationFileNames[0],
|
|
Example: `
|
|
remove patch {filepath}`,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
err := o.Validate(args)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = o.Complete(cmd, args)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return o.RunRemovePatch(fsys)
|
|
},
|
|
}
|
|
return cmd
|
|
}
|
|
|
|
// Validate validates removePatch command.
|
|
func (o *removePatchOptions) Validate(args []string) error {
|
|
if len(args) == 0 {
|
|
return errors.New("must specify a patch file")
|
|
}
|
|
o.patchFilePaths = args
|
|
return nil
|
|
}
|
|
|
|
// Complete completes removePatch command.
|
|
func (o *removePatchOptions) Complete(cmd *cobra.Command, args []string) error {
|
|
return nil
|
|
}
|
|
|
|
// RunRemovePatch runs removePatch command (do real work).
|
|
func (o *removePatchOptions) RunRemovePatch(fSys fs.FileSystem) error {
|
|
patches, err := util.GlobPatterns(fSys, o.patchFilePaths)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(patches) == 0 {
|
|
return nil
|
|
}
|
|
|
|
mf, err := kustfile.NewKustomizationFile(fSys)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m, err := mf.Read()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var removePatches []string
|
|
for _, p := range patches {
|
|
if !patch.Exist(m.PatchesStrategicMerge, p) {
|
|
log.Printf("patch %s doesn't exist in kustomization file", p)
|
|
continue
|
|
}
|
|
removePatches = append(removePatches, p)
|
|
}
|
|
m.PatchesStrategicMerge = patch.Delete(m.PatchesStrategicMerge, removePatches...)
|
|
|
|
return mf.Write(m)
|
|
}
|