[jsonnet] Add vars and code_vars attributes to jsonnet_to_json to allow passing external variables to Jsonnet via --var and --code_var.
RELNOTES: [jsonnet] Add vars and code_vars attributes to jsonnet_to_json to allow passing external variables to Jsonnet via --var and --code_var.
--
MOS_MIGRATED_REVID=105305323
diff --git a/tools/build_defs/jsonnet/jsonnet.bzl b/tools/build_defs/jsonnet/jsonnet.bzl
index 91f371f..2689eb7 100644
--- a/tools/build_defs/jsonnet/jsonnet.bzl
+++ b/tools/build_defs/jsonnet/jsonnet.bzl
@@ -57,6 +57,8 @@
"""Implementation of the jsonnet_to_json rule."""
depinfo = _setup_deps(ctx.attr.deps)
toolchain = _jsonnet_toolchain(ctx)
+ jsonnet_vars = ctx.attr.vars
+ jsonnet_code_vars = ctx.attr.code_vars
command = (
[
"set -e;",
@@ -65,7 +67,11 @@
["-J %s/%s" % (ctx.label.package, im) for im in ctx.attr.imports] +
["-J %s" % im for im in depinfo.imports] +
toolchain.imports +
- ["-J ."])
+ ["-J ."] +
+ ["--var '%s'='%s'"
+ % (var, jsonnet_vars[var]) for var in jsonnet_vars.keys()] +
+ ["--code-var '%s'='%s'"
+ % (var, jsonnet_code_vars[var]) for var in jsonnet_vars.keys()])
outputs = []
# If multiple_outputs is set to true, then jsonnet will be invoked with the
@@ -119,9 +125,14 @@
attrs = _jsonnet_library_attrs + _jsonnet_common_attrs,
)
-_jsonnet_to_json_attrs = {
+_jsonnet_compile_attrs = {
"src": attr.label(allow_files = JSONNET_FILETYPE,
single_file = True),
+ "vars": attr.string_dict(),
+ "code_vars": attr.string_dict(),
+}
+
+_jsonnet_to_json_attrs = _jsonnet_compile_attrs + {
"outs": attr.output_list(mandatory = True),
"multiple_outputs": attr.bool(),
}