Public API for yq ## yq
yq(name, srcs, expression, args, outs, kwargs)
Invoke yq with an expression on a set of input files. For yq documentation, see https://mikefarah.gitbook.io/yq. To use this rule you must register the yq toolchain in your WORKSPACE: ```starlark load("@aspect_bazel_lib//lib:repositories.bzl", "register_yq_toolchains") register_yq_toolchains() ``` Usage examples: ```starlark load("@aspect_bazel_lib//lib:yq.bzl", "yq") ``` ```starlark # Remove fields yq( name = "safe-config", srcs = ["config.yaml"], expression = "del(.credentials)", ) ``` ```starlark # Merge two yaml documents yq( name = "ab", srcs = [ "a.yaml", "b.yaml", ], expression = ". as $item ireduce ({}; . * $item )", ) ``` ```starlark # Split a yaml file into several files yq( name = "split", srcs = ["multidoc.yaml"], outs = [ "first.yml", "second.yml", ], args = [ "-s '.a'", # Split expression "--no-doc", # Exclude document separator -- ], ) ``` ```starlark # Convert a yaml file to json yq( name = "convert-to-json", srcs = ["foo.yaml"], args = ["-o=json"], outs = ["foo.json"], ) ``` ```starlark # Convert a json file to yaml yq( name = "convert-to-yaml", srcs = ["bar.json"], args = ["-P"], outs = ["bar.yaml"], ) ``` ```starlark # Call yq in a genrule genrule( name = "generate", srcs = ["farm.yaml"], outs = ["genrule_output.yaml"], cmd = "$(YQ_BIN) '.moo = "cow"' $(location farm.yaml) > $@", toolchains = ["@yq_toolchains//:resolved_toolchain"], ) ``` ```starlark # With --stamp, causes properties to be replaced by version control info. yq( name = "stamped", srcs = ["package.yaml"], expression = "|".join([ "load(strenv(STAMP)) as $stamp", # Provide a default using the "alternative operator" in case $stamp is empty dict. ".version = ($stamp.BUILD_EMBED_LABEL // "")", ]), ) ``` yq is capable of parsing and outputting to other formats. See their [docs](https://mikefarah.gitbook.io/yq) for more examples. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | name | Name of the rule | none | | srcs | List of input file labels | none | | expression | yq expression (https://mikefarah.gitbook.io/yq/commands/evaluate). Defaults to the identity expression ".". Subject to stamp variable replacements, see [Stamping](./stamping.md). When stamping is enabled, an environment variable named "STAMP" will be available in the expression.

Be careful to write the filter so that it handles unstamped builds, as in the example above. | "." | | args | Additional args to pass to yq. Note that you do not need to pass _eval_ or _eval-all_ as this is handled automatically based on the number srcs. Passing the output format or the parse format is optional as these can be guessed based on the file extensions in srcs and outs. | [] | | outs | Name of the output files. Defaults to a single output with the name plus a ".yaml" extension, or the extension corresponding to a passed output argment (e.g., "-o=json"). For split operations you must declare all outputs as the name of the output files depends on the expression. | None | | kwargs | Other common named parameters such as tags or visibility | none |