mirror of
https://github.com/bazel-contrib/bazel-lib
synced 2024-11-27 17:43:27 +00:00
2.5 KiB
2.5 KiB
Public API for jq
jq
jq(name, srcs, filter, filter_file, args, out, kwargs)
Invoke jq with a filter on a set of json input files.
For jq documentation, see https://stedolan.github.io/jq/.
To use this rule you must register the jq toolchain in your WORKSPACE:
load("@aspect_bazel_lib//lib:repositories.bzl", "register_jq_toolchains")
register_jq_toolchains(version = "1.6")
Usage examples:
load("@aspect_bazel_lib//lib:jq.bzl", "jq")
# Remove fields from package.json
jq(
name = "no_dev_deps",
srcs = ["package.json"],
filter = "del(.devDependencies)",
)
# Merge bar.json on top of foo.json
jq(
name = "merged",
srcs = ["foo.json", "bar.json"],
filter = ".[0] * .[1]",
args = ["--slurp"],
out = "foobar.json",
)
# Long filters can be split over several lines with comments
jq(
name = "complex",
srcs = ["a.json", "b.json"],
filter = """
.[0] as $a
# Take select fields from b.json
| (.[1] | {foo, bar, tags}) as $b
# Merge b onto a
| ($a * $b)
# Combine 'tags' array from both
| .tags = ($a.tags + $b.tags)
# Add new field
+ {\"aspect_is_cool\": true}
""",
args = ["--slurp"],
)
# Load filter from a file
jq(
name = "merged",
srcs = ["foo.json", "bar.json"],
filter_file = "filter.txt",
args = ["--slurp"],
out = "foobar.json",
)
PARAMETERS
Name | Description | Default Value |
---|---|---|
name | Name of the rule | none |
srcs | List of input json files | none |
filter | Filter expression (https://stedolan.github.io/jq/manual/#Basicfilters) | None |
filter_file | File containing filter expression (alternative to filter ) |
None |
args | Additional args to pass to jq | [] |
out | Name of the output json file; defaults to the rule name plus ".json" | None |
kwargs | Other common named parameters such as tags or visibility |
none |