yaml-patch
is a version of Evan Phoenix's
json-patch, which is an implementation
of JavaScript Object Notation (JSON) Patch,
but for YAML.
go get github.com/krishicks/yaml-patch
If you want to use the CLI:
go get github.com/krishicks/yaml-patch/cmd/yaml-patch
Given the following RFC6902-ish YAML document, ops
:
---
- op: add
path: /baz/waldo
value: fred
And the following YAML that is to be modified, src
:
---
foo: bar
baz:
quux: grault
Decode the ops file into a patch:
patch, err := yamlpatch.DecodePatch(ops)
// handle err
Then apply that patch to the document:
dst, err := patch.Apply(src)
// handle err
// do something with dst
doc := []byte(`---
foo: bar
baz:
quux: grault
`)
ops := []byte(`---
- op: add
path: /baz/waldo
value: fred
`)
patch, err := yamlpatch.DecodePatch(ops)
if err != nil {
log.Fatalf("decoding patch failed: %s", err)
}
bs, err := patch.Apply(doc)
if err != nil {
log.Fatalf("applying patch failed: %s", err)
}
fmt.Println(string(bs))
baz:
quux: grault
waldo: fred
foo: bar