go

module
v0.15.1 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2025 License: Apache-2.0

README

Go Reference Documentation Github platforms Docker Image

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, TOML, OpenAPI, Protobuf, 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 cuelang.org, 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.24 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.

Learning CUE

The fastest way to learn the basics is to follow the language tour on the website.

The cuelang.org website also contains more documentation, including tutorials, how-to guides, concept guides, and references.

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


Unless otherwise noted, the CUE source files are distributed under the Apache 2.0 license found in the LICENSE file.

Directories

Path Synopsis
cmd
cue command
cue
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 CUE.
Package json converts JSON to 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.
xml/koala
Package koala converts XML to and from CUE, as described in the proposal for the koala encoding.
Package koala converts XML to and from CUE, as described in the proposal for the koala encoding.
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.
anyunique
Package anyunique provides canonicalization of values under a caller-defined equivalence relation.
Package anyunique provides canonicalization of values under a caller-defined equivalence relation.
buildattr
Package buildattr implements support for interpreting the @if build attributes in CUE files.
Package buildattr implements support for interpreting the @if build attributes in CUE files.
ci
ci/checks command
cli
cmd/cue-ast command
cue-ast-print parses a CUE file and prints its syntax tree, for example:
cue-ast-print parses a CUE file and prints its syntax tree, for example:
copy
Package copy provides utilities to copy files and directories.
Package copy provides utilities to copy files and directories.
core/adt
Package adt represents partially and fully evaluated CUE types.
Package adt represents partially and fully evaluated CUE types.
core/convert
Package convert allows converting to and from Go values and Types.
Package convert allows converting to and from Go values and Types.
core/debug
Package debug prints a given ADT node.
Package debug prints a given ADT node.
core/dep
Package dep analyzes dependencies between values.
Package dep analyzes dependencies between values.
core/format
Package format provides functionality for pretty-printing CUE values.
Package format provides functionality for pretty-printing CUE values.
core/path
Package path provides utilities for converting cue.Selectors and cue.Paths to internal equivalents.
Package path provides utilities for converting cue.Selectors and cue.Paths to internal equivalents.
core/subsume
Package subsume defines various subsumption relations.
Package subsume defines various subsumption relations.
core/walk
walk provides functions for visiting the nodes of an ADT tree.
walk provides functions for visiting the nodes of an ADT tree.
cueconfig
Package cueconfig holds internal API relating to CUE configuration.
Package cueconfig holds internal API relating to CUE configuration.
cueimports
Package cueimports provides support for reading the import section of a CUE file without needing to read the rest of it.
Package cueimports provides support for reading the import section of a CUE file without needing to read the rest of it.
cuetdtest
Package testing is a helper package for test packages in the CUE project.
Package testing is a helper package for test packages in the CUE project.
cuetest
Package testing is a helper package for test packages in the CUE project.
Package testing is a helper package for test packages in the CUE project.
cueversion
Package cueversion provides access to the version of the cuelang.org/go module.
Package cueversion provides access to the version of the cuelang.org/go module.
filetypes/internal
Package internal holds some internal parts of the filetypes package that need to be shared between the code generator and the package proper.
Package internal holds some internal parts of the filetypes package that need to be shared between the code generator and the package proper.
filetypes/internal/genstruct
Package genstruct provides support for simple compact struct representations.
Package genstruct provides support for simple compact struct representations.
golangorgx/gopls/cmd
Package cmd handles the cuelsp command line.
Package cmd handles the cuelsp command line.
golangorgx/gopls/hooks
Package hooks adds all the standard gopls implementations.
Package hooks adds all the standard gopls implementations.
golangorgx/gopls/lsprpc
Package lsprpc implements a jsonrpc2.StreamServer that may be used to serve the LSP on a jsonrpc2 channel.
Package lsprpc implements a jsonrpc2.StreamServer that may be used to serve the LSP on a jsonrpc2 channel.
golangorgx/gopls/progress
The progress package defines utilities for reporting the progress of long-running operations using features of the LSP client interface such as Progress and ShowMessage.
The progress package defines utilities for reporting the progress of long-running operations using features of the LSP client interface such as Progress and ShowMessage.
golangorgx/gopls/protocol
Package protocol contains the structs that map directly to the request and response messages of the Language Server Protocol.
Package protocol contains the structs that map directly to the request and response messages of the Language Server Protocol.
golangorgx/gopls/protocol/command
Package command defines the interface provided by gopls for the workspace/executeCommand LSP request.
Package command defines the interface provided by gopls for the workspace/executeCommand LSP request.
golangorgx/gopls/protocol/semtok
The semtok package provides an encoder for LSP's semantic tokens.
The semtok package provides an encoder for LSP's semantic tokens.
golangorgx/gopls/test/integration
Package integration provides a framework for writing integration tests of gopls.
Package integration provides a framework for writing integration tests of gopls.
golangorgx/gopls/test/integration/fake
Package fake provides a fake implementation of an LSP-enabled text editor, its LSP client plugin, and a Sandbox environment for use in integration tests.
Package fake provides a fake implementation of an LSP-enabled text editor, its LSP client plugin, and a Sandbox environment for use in integration tests.
golangorgx/gopls/test/integration/fake/glob
Package glob implements an LSP-compliant glob pattern matcher for testing.
Package glob implements an LSP-compliant glob pattern matcher for testing.
golangorgx/gopls/util/browser
Package browser provides utilities for interacting with users' browsers.
Package browser provides utilities for interacting with users' browsers.
golangorgx/gopls/util/safetoken
Package safetoken provides wrappers around methods in go/token, that return errors rather than panicking.
Package safetoken provides wrappers around methods in go/token, that return errors rather than panicking.
golangorgx/tools/diff
Package diff computes differences between text files or strings.
Package diff computes differences between text files or strings.
golangorgx/tools/diff/lcs
package lcs contains code to find longest-common-subsequences (and diffs)
package lcs contains code to find longest-common-subsequences (and diffs)
golangorgx/tools/event
Package event provides a set of packages that cover the main concepts of telemetry in an implementation agnostic way.
Package event provides a set of packages that cover the main concepts of telemetry in an implementation agnostic way.
golangorgx/tools/event/core
Package core provides support for event based telemetry.
Package core provides support for event based telemetry.
golangorgx/tools/event/export/metric
Package metric aggregates events into metrics that can be exported.
Package metric aggregates events into metrics that can be exported.
golangorgx/tools/event/export/ocagent
Package ocagent adds the ability to export all telemetry to an ocagent.
Package ocagent adds the ability to export all telemetry to an ocagent.
golangorgx/tools/event/tag
Package tag provides the labels used for telemetry throughout gopls.
Package tag provides the labels used for telemetry throughout gopls.
golangorgx/tools/jsonrpc2
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.
golangorgx/tools/jsonrpc2/servertest
Package servertest provides utilities for running tests against a remote LSP server.
Package servertest provides utilities for running tests against a remote LSP server.
golangorgx/tools/tool
Package tool is a harness for writing Go tools.
Package tool is a harness for writing Go tools.
lsp/definitions
Definitions resolves paths to sets of ast.Node.
Definitions resolves paths to sets of ast.Node.
lsp/server
Package server defines gopls' implementation of the LSP server interface, protocol.Server.
Package server defines gopls' implementation of the LSP server interface, protocol.Server.
mod/modfiledata
Package modfiledata holds the underlying module.cue file representation.
Package modfiledata holds the underlying module.cue file representation.
mod/mvs
Package mvs implements Minimal Version Selection.
Package mvs implements Minimal Version Selection.
mod/semver
Package semver implements comparison of semantic version strings.
Package semver implements comparison of semantic version strings.
par
Package par implements parallel execution helpers.
Package par implements parallel execution helpers.
pkg
robustio
This directory contains a copy of "golang.org/x/tools/internal/robustio", from the commit tagged with v0.34.0 (commit 578c1213983a83e6411536ddf6bbf3a1faf97aea)
This directory contains a copy of "golang.org/x/tools/internal/robustio", from the commit tagged with v0.34.0 (commit 578c1213983a83e6411536ddf6bbf3a1faf97aea)
source
Package source contains utility functions that standardize reading source bytes across cue packages.
Package source contains utility functions that standardize reading source bytes across cue packages.
task
Package task provides a registry for tasks to be used by commands.
Package task provides a registry for tasks to be used by commands.
tdtest
Package tdtest provides support for table-driven testing.
Package tdtest provides support for table-driven testing.
value
Package value contains functions for converting values to internal types and various other Value-related utilities.
Package value contains functions for converting values to internal types and various other Value-related utilities.
vcs
Package vcs provides access to operations on the version control systems supported by the source field in module.cue.
Package vcs provides access to operations on the version control systems supported by the source field in module.cue.
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.
pkg
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.

Jump to

Keyboard shortcuts

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