yq/pkg/yqlib/doc/Encoder and Decoder.md
2021-10-22 15:21:01 +11:00

1.9 KiB

Encode operators will take the piped in object structure and encode it as a string in the desired format. The decode operators do the opposite, they take a formatted string and decode it into the relevant object structure.

These operators are useful to process yaml documents that have stringified embeded yaml/json/props in them.

Encode value as yaml string

Given a sample.yml file of:

a:
  cool: thing

then

yq eval '.b = (.a | to_yaml)' sample.yml

will output

a:
  cool: thing
b: |
  cool: thing  

Encode value as yaml string, using toyaml

Does the same thing as to_yaml, matching jq naming convention.

Given a sample.yml file of:

a:
  cool: thing

then

yq eval '.b = (.a | to_yaml)' sample.yml

will output

a:
  cool: thing
b: |
  cool: thing  

Encode value as json string

Given a sample.yml file of:

a:
  cool: thing

then

yq eval '.b = (.a | to_json)' sample.yml

will output

a:
  cool: thing
b: |
  {
    "cool": "thing"
  }  

Encode value as props string

Given a sample.yml file of:

a:
  cool: thing

then

yq eval '.b = (.a | to_props)' sample.yml

will output

a:
  cool: thing
b: |
  cool = thing  

Decode a yaml encoded string

Given a sample.yml file of:

a: 'foo: bar'

then

yq eval '.b = (.a | from_yaml)' sample.yml

will output

a: 'foo: bar'
b:
  foo: bar

Update a multiline encoded yaml string

Given a sample.yml file of:

a: |
  foo: bar
  baz: dog  

then

yq eval '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml

will output

a: |
  foo: cat
  baz: dog  

Update a single line encoded yaml string

Given a sample.yml file of:

a: 'foo: bar'

then

yq eval '.a |= (from_yaml | .foo = "cat" | to_yaml)' sample.yml

will output

a: 'foo: cat'