rules_cue

module
v0.0.0-...-ac110f1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: Apache-2.0

README

CUE Rules for Bazel

Status

While this repository is still in use it is essentially in maintenance mode. For a more featureful set of rules you might consider https://github.com/seh/rules_cue .

Rules

Overview

These build rules are used for building CUE projects with Bazel.

Setup

To use the CUE rules, add the following to your WORKSPACE file to add the external repositories for CUE, making sure to use the latest published versions:

http_archive(
    name = "com_github_tnarg_rules_cue",
    # Make sure to check for the latest version when you install
    url = "https://github.com/tnarg/rules_cue/archive/e3ed06bc3ce1c49afb05f70327ef1119fbdcb61c.zip",
    strip_prefix = "rules_cue-e3ed06bc3ce1c49afb05f70327ef1119fbdcb61c",
    sha256 = "7413394c4c0372e9ad93a2027216a351f355f6abad42d5707ecfaf00cd27a609",
)

load("@com_github_tnarg_rules_cue//cue:deps.bzl", "cue_register_toolchains")
load("@com_github_tnarg_rules_cue//:go.bzl", cue_go_modules = "go_modules")

cue_go_modules()

cue_register_toolchains()

Build Rule Reference

cue_export
cue_export(name, src, deps=[], output_format=<format>", output_name=<src_filename.cue>)

Exports a single CUE entry-point file. The entry-point file may have dependencies (cue_library rules, see below).

Attribute Description
name Unique name for this rule (required)
src Cue compilation entry-point (required).
deps List of dependencies for the src. Each dependency is a cue_library
output_format It should be one of :value:json or :value:yaml.
output_name Output file name, including extension. Defaults to <src_name>.json
expression expression to be evaluate in the cue file
cue_library
cue_library(name, srcs, importpath, deps=[])

Defines a collection of Cue files that can be depended on by a cue_export. Does not generate any outputs.

Attribute Description
name Unique name for this rule (required)
srcs CUE files included in this library. Package name MUST match the directory name.
importpath The source import path of this library. Other .cue files can import this library using this path.
deps Dependencies for the srcs. Each dependency is a cue_library

Gazelle Extension

To use Gazelle in your project to generate BUILD.bazel files for your .cue files, add gazelle to your WORKSPACE, and then add the following to your repository root BUILD.bazel:

load("@bazel_gazelle//:def.bzl", "DEFAULT_LANGUAGES", "gazelle_binary", "gazelle")

gazelle_binary(
    name = "gazelle_binary",
    languages = DEFAULT_LANGUAGES + ["@com_github_tnarg_rules_cue//gazelle/cue:go_default_library"],
    msan = "off",
    pure = "off",
    race = "off",
    static = "off",
    visibility = ["//visibility:public"],
)

# gazelle:prefix github.com/example/project
gazelle(
    name = "gazelle",
    gazelle = "//:gazelle_binary",
)

Run bazel run //:gazelle -- update-repos -from_file=go.mod to update repositories.

Directories

Path Synopsis
gazelle
cue

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL