Perl helper for some yaml tasks via yq so comments are preserved.
Go to file
Zane C. B-H 14c8584180 bump version and ready for release 2023-12-28 14:55:59 -06:00
bin update to properly repoint the #! bit 2022-10-25 23:45:20 -05:00
lib/YAML/yq bump version and ready for release 2023-12-28 14:55:59 -06:00
src_bin another ensure note 2023-12-28 14:54:14 -06:00
t more work on this 2022-10-24 17:55:09 -05:00
.gitignore a few tweaks to it 2022-10-25 23:51:14 -05:00
Changes bump version and ready for release 2023-12-28 14:55:59 -06:00
MANIFEST a few tweaks to it 2022-10-25 23:51:14 -05:00
Makefile.PL convert to Pod::Usage 2023-12-28 13:12:13 -06:00
README.md another ensure note 2023-12-28 14:54:14 -06:00
ignore.txt more work on this 2022-10-24 17:55:09 -05:00

README.md

YAML-yq-Helper

Wrapper for yq for various common tasks so YAML files can be manipulated in a manner to preserver comments and version header.

Install

Debian

apt-get install cpanminus
cpanm YAML::yq::Helper

FreeBSD

pkg install p5-App-cpanminus p5-File-Slurp
cpanm YAML::yq::Helper

Source

perl Makefile.PL
make
make test
make install

yqh

SYNOPSIS

yqh -f <yaml> -a clear_array --var <var>
yqh -f <yaml> -a clear_hash<--var <var>
yqh -f <yaml> -a create_array --var <var> [--vals <vals>]
yqh -f <yaml> -a create_hash --var <var>
yqh -f <yaml> -a dedup_array --var <var>
yqh -f <yaml> -a delete B<--var> <var>
yqh -f <yaml> -a delete_array --var <var>
yqh -f <yaml> -a delete_hash --var <var>
yqh -f <yaml> -a ensure
yqh -f <yaml> -a is_array --var <var>
yqh -f <yaml> -a is_hash --var <var>
yqh -f <yaml> -a is_defined --var <var>
yqh -f <yaml> -a merge_yaml --yaml <yaml> [--mode <mode>]
yqh -f <yaml> -a push_array --var <var> --vals <vals>
yqh -f <yaml> -a set_array --var <var> --vals <vals>
yqh -f <yaml> -a set_hash --var <var> --hash <hash>
yqh -f <yaml> -a set_in_array --var <var> --vals <vals> [--dedup <0/1>]
yqh -f <yaml> -a yaml_diff --yaml <yaml_file_2>

FLAGS

-f file

YAML file to operate on.

Default :: undef

-a action

Action to perform.

Default :: undef

--var string

Variable to set.

Default :: undef

--vals string

Comma seperate list of array values.

Default :: undef

--hash

Comma seperate list of hash values. Each value is a sub string with key/value seperate by a /=/.

Default :: undef

--dedup 0/1

If it should dedup the data for the op.

Default :: 1

--yaml file

Another YAML file to use with like the merge_yaml action or the like.

Default :: undef

--mode mode

Merge mode to use.

Default :: deeply

ACTIONS

clear_array

Clears the specified array.

Requires :: --var

clear_hash

Clears the specified hash.

Requires :: --var

create_array

Creates the specified array if it does not exist.

Requires :: --var

Optional :: --vals

create_hash

Creates the specified hash if it does not exist.

Requires :: --var

dedup_array

Deduplicates an array.

Requires :: --var

delete

Deletes the var without checking the type.

Requires :: --var

delete_array

Deletes the specified array.

Requires :: --var

delete_hash

Deletes the specified hash.

Requires :: --var

ensure

Ensures that the YAML starts with

%YAML $version
---

This is largely for use with stuff used by LibYAML as that sometimes does not play nice when that is missing.

Version 1.1 is used if it is not set.

is_array

Returns 0 or 1 based on if it is a array.

Requires :: --var

is_hash

Returns 0 or 1 based on if it is a hash.

Requires :: --var

is_defined

Returns 0 or 1 based on if it is defined.

Requires :: --var

merge_yaml

Merges the specified YAML into the YAML.

Requires :: --yaml

Optional :: --mode

push_array

Pushes a set of items onto an array.

Requires :: --var, --vals

set_array

Clears the array and sets it to specified values.

Requires :: --var, --vals

set_hash

Clears the hash and sets it to specified values.

Requires :: --var, --hash

set_in_array

Make sure a set of values exist in a array and if not add them.

Requires :: --var, --vals

Optional :: --dedup

yaml_diff

Diffs the two YAMLs.

Requires :: --yaml