Prerequisites
Lets assume we have following yaml file called snapshots.yaml where the fields reference and version should be read for each item in the snapshots key in POSIX script
documentation:
snapshots:
- reference: master
version: latest
- reference: '2024.1'
version: '1.2.1'
- reference: '2023.12'
version: '1.0.1'In order to read them in POSIX script lets use the tool yq and jq, it provide support to process yaml and json contents respectively.
Use following command to read documentation.snapshots yaml content as json
yq eval -o=j -I=0 '.documentation.snapshots[]' snapshots.yamlthis will produce the following result, where each line will be a json object
{"reference":"master","version":"latest"}
{"reference":"2024.1","version":"1.2.1"}
{"reference":"2023.12","version":"1.0.1"}these result can be iterated in POSIX script and each json line can be processed using the jq tool to read the fields reference and version like this.
echo '{"reference":"master","version":"latest"}' | jq -r .reference
echo '{"reference":"master","version":"latest"}' | jq -r .versionWith all that the complete POSIX script would look like this.
#!/usr/bin/env sh
set -eu
for snapshot in $(yq eval -o=j -I=0 '.documentation.snapshots[]' snapshots.yaml); do
reference=$(echo "$snapshot" | jq -r .reference)
version=$(echo "$snapshot" | jq -r .version)
echo "Reference: $reference, Version: $version"
doneResult
Reference: master, Version: latest
Reference: 2024.1, Version: 1.2.1
Reference: 2023.12, Version: 1.0.1
No comments:
Post a Comment