mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-12 10:56:54 +00:00
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
|
|
jsonpatch "github.com/evanphx/json-patch"
|
|
flags "github.com/jessevdk/go-flags"
|
|
)
|
|
|
|
type opts struct {
|
|
PatchFilePaths []FileFlag `long:"patch-file" short:"p" value-name:"PATH" description:"Path to file with one or more operations"`
|
|
}
|
|
|
|
func main() {
|
|
var o opts
|
|
_, err := flags.Parse(&o)
|
|
if err != nil {
|
|
log.Fatalf("error: %s\n", err)
|
|
}
|
|
|
|
patches := make([]jsonpatch.Patch, len(o.PatchFilePaths))
|
|
|
|
for i, patchFilePath := range o.PatchFilePaths {
|
|
var bs []byte
|
|
bs, err = ioutil.ReadFile(patchFilePath.Path())
|
|
if err != nil {
|
|
log.Fatalf("error reading patch file: %s", err)
|
|
}
|
|
|
|
var patch jsonpatch.Patch
|
|
patch, err = jsonpatch.DecodePatch(bs)
|
|
if err != nil {
|
|
log.Fatalf("error decoding patch file: %s", err)
|
|
}
|
|
|
|
patches[i] = patch
|
|
}
|
|
|
|
doc, err := ioutil.ReadAll(os.Stdin)
|
|
if err != nil {
|
|
log.Fatalf("error reading from stdin: %s", err)
|
|
}
|
|
|
|
mdoc := doc
|
|
for _, patch := range patches {
|
|
mdoc, err = patch.Apply(mdoc)
|
|
if err != nil {
|
|
log.Fatalf("error applying patch: %s", err)
|
|
}
|
|
}
|
|
|
|
fmt.Printf("%s", mdoc)
|
|
}
|