README
¶
CUE - Configure, Unify, Execute
CUE makes it easy to validate data, write schemas, and ensure configurations align with policies.
CUE works with a wide range of tools and formats that you're already using such as Go, JSON, YAML, OpenAPI, and JSON Schema.
For more information and documentation, including tutorials and guides, see cuelang.org.
Download and Install
The full range of installation methods for the cue
command are listed on the
cuelang.org site,
including the official container image suitable for use with Docker.
Here are two common ways to install the command:
Release builds
Download the latest release from GitHub.
Install from Source
You need Go 1.23 or later to install CUE from source:
go install cuelang.org/go/cmd/cue@latest
You can also clone the repository and build it directly via go install ./cmd/cue
.
Note that local builds lack version information,
so you should inject the version string when building a release, such as:
git switch -d v0.11.0
go install -ldflags='-X cuelang.org/go/cmd/cue/cmd.version=v0.11.0' ./cmd/cue
Learning CUE
The fastest way to learn the basics is to follow the tour on the website.
More documentation including various tutorials can be found on the website.
References
- Language Specification: the official CUE Language specification
- Go API: the Go API on pkgo.dev
- Builtin packages: builtin functions available from CUE programs
cue
CLI: thecue
command line interface
Go release support policy
As a general rule, we support the two most recent major releases of Go, matching Go's security policy. For example, if CUE v0.7.0 is released when Go's latest version is 1.21.5, v0.7.x including any following bugfix releases will require Go 1.20 or later.
Contributing
To contribute, please read the Contribution Guide.
Code of Conduct
Guidelines for participating in CUE community spaces and a reporting process for handling issues can be found in the Code of Conduct.
Contact
- Ask questions via GitHub Discussions
- Chat with us on Slack and Discord
- Subscribe to our Community Calendar for community updates, demos, office hours, etc
Unless otherwise noted, the CUE source files are distributed under the Apache 2.0 license found in the LICENSE file.
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
Package cue is the main API for CUE evaluation.
|
Package cue is the main API for CUE evaluation. |
ast
Package ast declares the types used to represent syntax trees for CUE packages.
|
Package ast declares the types used to represent syntax trees for CUE packages. |
build
Package build defines data types and utilities for defining CUE configuration instances.
|
Package build defines data types and utilities for defining CUE configuration instances. |
errors
Package errors defines shared types for handling CUE errors.
|
Package errors defines shared types for handling CUE errors. |
format
Package format implements standard formatting of CUE configurations.
|
Package format implements standard formatting of CUE configurations. |
interpreter/embed
Package embed provides capabilities to CUE to embed any file that resides within a CUE module into CUE either verbatim or decoded.
|
Package embed provides capabilities to CUE to embed any file that resides within a CUE module into CUE either verbatim or decoded. |
interpreter/wasm
Package wasm allows users to write their own functions and make them available to CUE via Wasm modules.
|
Package wasm allows users to write their own functions and make them available to CUE via Wasm modules. |
literal
Package literal implements conversions to and from string representations of basic data types.
|
Package literal implements conversions to and from string representations of basic data types. |
load
Package load loads CUE instances.
|
Package load loads CUE instances. |
parser
Package parser implements a parser for CUE source files.
|
Package parser implements a parser for CUE source files. |
scanner
Package scanner implements a scanner for CUE source text.
|
Package scanner implements a scanner for CUE source text. |
stats
Package stats is an experimental package for getting statistics on CUE evaluations.
|
Package stats is an experimental package for getting statistics on CUE evaluations. |
token
Package token defines constants representing the lexical tokens of the Go programming language and basic operations on tokens (printing, predicates).
|
Package token defines constants representing the lexical tokens of the Go programming language and basic operations on tokens (printing, predicates). |
Package cuego allows using CUE constraints in Go programs.
|
Package cuego allows using CUE constraints in Go programs. |
Package encoding contains subpackages to convert CUE to and from byte-level and textual representations.
|
Package encoding contains subpackages to convert CUE to and from byte-level and textual representations. |
gocode
Package gocode defines functions for extracting CUE definitions from Go code and generating Go code from CUE values.
|
Package gocode defines functions for extracting CUE definitions from Go code and generating Go code from CUE values. |
gocode/gocodec
Package gocodec converts Go to and from CUE and validates Go values based on CUE constraints.
|
Package gocodec converts Go to and from CUE and validates Go values based on CUE constraints. |
json
Package json converts JSON to and from CUE.
|
Package json converts JSON to and from CUE. |
jsonschema
Package jsonschema converts JSON Schema to CUE
|
Package jsonschema converts JSON Schema to CUE |
openapi
Package openapi provides functionality for mapping CUE to and from OpenAPI v3.0.0.
|
Package openapi provides functionality for mapping CUE to and from OpenAPI v3.0.0. |
protobuf
Package protobuf defines functionality for parsing protocol buffer definitions and instances.
|
Package protobuf defines functionality for parsing protocol buffer definitions and instances. |
protobuf/jsonpb
Package jsonpb rewrites a CUE expression based upon the Protobuf interpretation of JSON.
|
Package jsonpb rewrites a CUE expression based upon the Protobuf interpretation of JSON. |
protobuf/textproto
Package textproto converts text protobuffer files to and from CUE.
|
Package textproto converts text protobuffer files to and from CUE. |
toml
Package toml converts TOML to and from CUE.
|
Package toml converts TOML to and from CUE. |
yaml
Package yaml converts YAML encodings to and from CUE.
|
Package yaml converts YAML encodings to and from CUE. |
Package internal exposes some cue internals to other packages.
|
Package internal exposes some cue internals to other packages. |
mod
|
|
modcache
Package modcache provides a file-based cache for modules.
|
Package modcache provides a file-based cache for modules. |
modconfig
Package modconfig provides access to the standard CUE module configuration, including registry access and authorization.
|
Package modconfig provides access to the standard CUE module configuration, including registry access and authorization. |
modfile
Package modfile provides functionality for reading and parsing the CUE module file, cue.mod/module.cue.
|
Package modfile provides functionality for reading and parsing the CUE module file, cue.mod/module.cue. |
modregistry
Package modregistry provides functionality for reading and writing CUE modules from an OCI registry.
|
Package modregistry provides functionality for reading and writing CUE modules from an OCI registry. |
modregistrytest
Package modregistrytest provides helpers for testing packages which interact with CUE registries.
|
Package modregistrytest provides helpers for testing packages which interact with CUE registries. |
module
Package module defines the Version type along with support code.
|
Package module defines the Version type along with support code. |
modzip
Package modzip provides functions for creating and extracting module zip files.
|
Package modzip provides functions for creating and extracting module zip files. |
Package pkg defines CUE standard packages.
|
Package pkg defines CUE standard packages. |
crypto/hmac
Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198.
|
Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198. |
encoding/base64
Package base64 implements base64 encoding as specified by RFC 4648.
|
Package base64 implements base64 encoding as specified by RFC 4648. |
list
Package list contains functions for manipulating and examining lists.
|
Package list contains functions for manipulating and examining lists. |
net
Package net provides net-related type definitions.
|
Package net provides net-related type definitions. |
path
Package path implements utility routines for manipulating filename paths as defined by targetted operating systems, and also paths that always use forward slashes regardless of the operating system, such as URLs.
|
Package path implements utility routines for manipulating filename paths as defined by targetted operating systems, and also paths that always use forward slashes regardless of the operating system, such as URLs. |
regexp
Package regexp implements regular expression search.
|
Package regexp implements regular expression search. |
strings
Package strings implements simple functions to manipulate UTF-8 encoded strings.package strings.
|
Package strings implements simple functions to manipulate UTF-8 encoded strings.package strings. |
struct
Package struct defines utilities for struct types.
|
Package struct defines utilities for struct types. |
time
Package time defines time-related types.
|
Package time defines time-related types. |
tool
Package tool defines stateful operation types for cue commands.
|
Package tool defines stateful operation types for cue commands. |
tool/cli
Package cli provides tasks dealing with a console.
|
Package cli provides tasks dealing with a console. |
tool/exec
Package exec defines tasks for running commands.
|
Package exec defines tasks for running commands. |
tool/file
Package file provides file operations for cue tasks.
|
Package file provides file operations for cue tasks. |
tool/http
Package http provides tasks related to the HTTP protocol.
|
Package http provides tasks related to the HTTP protocol. |
tool/os
Package os defines tasks for retrieving os-related information.
|
Package os defines tasks for retrieving os-related information. |
uuid
Package uuid defines functionality for creating UUIDs as defined in RFC 4122.
|
Package uuid defines functionality for creating UUIDs as defined in RFC 4122. |
tools
|
|
fix
Package fix contains functionality for writing CUE files with legacy syntax to newer ones.
|
Package fix contains functionality for writing CUE files with legacy syntax to newer ones. |
flow
Package flow provides a low-level workflow manager based on a CUE Instance.
|
Package flow provides a low-level workflow manager based on a CUE Instance. |
trim
Package trim removes some redundant values from CUE sources.
|
Package trim removes some redundant values from CUE sources. |