// Package updatemanifests provides a common library for updating Edge platform // manifests. package updatemanifests import ( "fmt" "os" "sigs.k8s.io/kustomize/kyaml/kio" "edge-infra.dev/pkg/edge/gitops/fns/edgerelease" "edge-infra.dev/pkg/edge/gitops/fns/normalizer" "edge-infra.dev/pkg/edge/yamlfmt" "edge-infra.dev/pkg/lib/errors" ) // Update builds a simple Kpt function pipeline from the provided // EdgeRelease object and the Normalizer function responsible for formatting // YAML resources. func Update(er edgerelease.EdgeRelease, path string) error { n := normalizer.Normalizer{} ignorer, err := yamlfmt.NewIgnorer(path) if err != nil { fmt.Println(err) fmt.Printf("could not load ignorer with path %s\n", path) os.Exit(1) } rw := kio.LocalPackageReadWriter{ PackagePath: path, FileSkipFunc: ignorer.IgnorePath, } err = kio.Pipeline{ Inputs: []kio.Reader{&rw}, Outputs: []kio.Writer{&rw}, Filters: []kio.Filter{ kio.FilterFunc(er.Run), kio.FilterFunc(n.Run), }, }.Execute() if err != nil { return errors.New("failed to update manifests", err) } return nil }