Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.aspect.build/llms.txt

Use this file to discover all available pages before exploring further.

Documentation for @yq.bzl@v0.3.5 View source
Load in your BUILD file:
load("@yq.bzl", "yq")

Examples

Remove fields:
yq(
    name = "safe-config",
    srcs = ["config.yaml"],
    expression = "del(.credentials)",
)
Merge two yaml documents:
yq(
    name = "ab",
    srcs = [
        "a.yaml",
        "b.yaml",
    ],
    expression = ". as $item ireduce ({}; . * $item )",
)
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 --
    ],
)
Convert a yaml file to json:
yq(
    name = "convert-to-json",
    srcs = ["foo.yaml"],
    args = ["-o=json"],
    outs = ["foo.json"],
)
Convert a json file to yaml:
yq(
    name = "convert-to-yaml",
    srcs = ["bar.json"],
    args = ["-P"],
    outs = ["bar.yaml"],
)
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"],
)
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 // "<unstamped>")",
    ]),
)

Function: yq

Invoke yq with an expression on a set of input files. yq is capable of parsing and outputting to other formats. See their docs for more examples.

Parameters

name
name
required
Name of the rule
srcs
name
required
List of input file labels
expression
name
default:"."
yq expression (https://mikefarah.gitbook.io/yq/commands/evaluate).Defaults to the identity expression ”.”. Subject to stamp variable replacements, see Stamping. 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
name
default:"[]"
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
default:"None"
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 argument such as "-o=json". For split operations you must declare all outputs, as the name of the output files depends on the expression.
kwargs
string_list
Other common named parameters such as tags or visibility