Skip to content

bazel-contrib/rules_jsonnet

Repository files navigation

Build status

Jsonnet Rules

Overview

These are build rules for working with Jsonnet files with Bazel.

Setup

To use the Jsonnet rules as part of your Bazel project, please follow the instructions on the releases page.

Jsonnet Compiler Selection

By default for Bzlmod, Bazel will use the Go compiler. Note that the primary development focus of the Jsonnet project is now with the Go compiler. This repository's support for using the C++ compiler is deprecated, and may be removed in a future release.

To use the C++ or Rust compiler of Jsonnet instead, register a different compiler:

Jsonnet compiler MODULE.bazel directive
Go jsonnet.compiler(name = "go")
cpp jsonnet.compiler(name = "cpp")
Rust jsonnet.compiler(name = "rust")

Rust Jsonnet Compiler

To use the Rust Jsonnet compiler a Nightly Rust version for the host tools is required because -Z bindeps is needed to compile the Jrsonnet binary.

Add the following snippet to the MODULE.bazel file:

bazel_dep(name = "rules_rust", version = "0.45.1")

rust_host = use_extension("@rules_rust//rust:extensions.bzl", "rust_host_tools")
rust_host.host_tools(
    version = "nightly/2024-05-02",
)

CLI

Use the --extra_toolchains flag to pass the preferred toolchain to the bazel invocation:

bazel build //... --extra_toolchains=@rules_jsonnet//jsonnet:cpp_jsonnet_toolchain

bazel test //... --extra_toolchains=@rules_jsonnet//jsonnet:rust_jsonnet_toolchain

bazel run //... --extra_toolchains=@rules_jsonnet//jsonnet:go_jsonnet_toolchain

Rule usage

Please refer to the StarDoc generated documentation for instructions on how to use these rules.