cue

package module
v0.3.0-alpha1 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2020 License: Apache-2.0 Imports: 0 Imported by: 0

README

GoDoc Github Go Report Card GolangCI platforms

The CUE Data Constraint Language

Configure, Unify, Execute

CUE is an open source data constraint language which aims to simplify tasks involving defining and using data.

It is a superset of JSON, allowing users familiar with JSON to get started quickly.

What is it for?

You can use CUE to

  • define a detailed validation schema for your data (manually or automatically from data)
  • reduce boilerplate in your data (manually or automatically from schema)
  • extract a schema from code
  • generate type definitions and validation code
  • merge JSON in a principled way
  • define and run declarative scripts
How?

CUE merges the notion of schema and data. The same CUE definition can simultaneously be used for validating data and act as a template to reduce boilerplate. Schema definition is enriched with fine-grained value definitions and default values. At the same time, data can be simplified by removing values implied by such detailed definitions. The merging of these two concepts enables many tasks to be handled in a principled way.

Constraints provide a simple and well-defined, yet powerful, alternative to inheritance, a common source of complexity with configuration languages.

CUE Scripting

The CUE scripting layer defines declarative scripting, expressed in CUE, on top of data. This solves three problems: working around the closedness of CUE definitions (we say CUE is hermetic), providing an easy way to share common scripts and workflows for using data, and giving CUE the knowledge of how data is used to optimize validation.

There are many tools that interpret data or use a specialized language for a specific domain (Kustomize, Ksonnet). This solves dealing with data on one level, but the problem it solves may repeat itself at a higher level when integrating other systems in a workflow. CUE scripting is generic and allows users to define any workflow.

Tooling

CUE is designed for automation. Some aspects of this are:

  • convert existing YAML and JSON
  • automatically simplify configurations
  • rich APIs designed for automated tooling
  • formatter
  • arbitrary-precision arithmetic
  • generate CUE templates from source code
  • generate source code from CUE definitions (TODO)
Download and Install
Install using Homebrew

Using Homebrew, you can install using the CUE Homebrew tap:

brew install cuelang/tap/cue

Install From Source

If you already have Go installed, the short version is:

go get -u cuelang.org/go/cmd/cue

This will install the cue command line tool.

For more details see Installing CUE.

Learning CUE

The fastest way to learn the basics is to follow the tutorial on basic language constructs.

A more elaborate tutorial demonstrating of how to convert and restructure an existing set of Kubernetes configurations is available in written form.

References
Contributing

Our canonical Git repository is located at https://cue.googlesource.com.

To contribute, please read the Contribution Guide.

To report issues or make a feature request, use the issue tracker.

Changes can be contributed using Gerrit or Github pull requests.

Contact

You can get in touch with the cuelang community in the following ways:


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

This is not an officially supported Google product.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
cue
cue
Package cue creates, evaluates and manipulates CUE configurations.
Package cue creates, evaluates and manipulates CUE configurations.
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.
encoding
Package encoding provides support for managing data format files supported by CUE.
Package encoding provides support for managing data format files supported by CUE.
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.
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.
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 codec converts Go to and from CUE and validates Go values based on CUE constraints.
Package codec 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 JSON Schema data is presented in CUE, so any of the supported encodings that can represent JSON Schema data can be used as a source.
Package jsonschema converts JSON Schema to CUE JSON Schema data is presented in CUE, so any of the supported encodings that can represent JSON Schema data can be used as a source.
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.
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.
cli
cmd/qgo
qgo builds CUE builtin packages from Go packages.
qgo builds CUE builtin packages from Go packages.
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/eval
Package eval contains the high level CUE evaluation strategy.
Package eval contains the high level CUE evaluation strategy.
core/subsume
Package subsume defines various subsumption relations.
Package subsume defines various subsumption relations.
core/validate
Package validate collects errors from an evaluated Vertex.
Package validate collects errors from an evaluated Vertex.
legacy/cue
Package cue is a transition package for supporting the cue.Value API.
Package cue is a transition package for supporting the cue.Value API.
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.
str
Package str provides string manipulation utilities.
Package str provides string manipulation utilities.
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.
third_party/yaml
Package yaml implements YAML support for the Go language.
Package yaml implements YAML support for the Go language.
walk
Package walk allows walking over CUE values.
Package walk allows walking over CUE values.
pkg
Package pkg define CUE standard packages.
Package pkg define CUE standard packages.
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.
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 statefull operation types for cue commands.
Package tool defines statefull 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.
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.
trim
Package trim removes definitions that may be inferred from templates.
Package trim removes definitions that may be inferred from templates.

Jump to

Keyboard shortcuts

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