go

module
Version: v0.4.0 Latest Latest
Warning

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

Go to latest
Published: May 25, 2021 License: Apache-2.0

README

Go Reference Github 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
Release builds

Download the latest release from GitHub.

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:

GO111MODULE=on go get cuelang.org/go/cmd/cue

Or, if you are using Go 1.16:

go install cuelang.org/go/cmd/cue@latest

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.

Directories

Path Synopsis
cmd
cue
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.
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.
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.
yaml
Package yaml converts YAML encodings to and from CUE.
Package yaml converts YAML encodings to and from CUE.
pkg
Package pkg define CUE standard packages.
Package pkg define 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.
gen
Package gen is a command that can be used to bootstrap a new builtin package directory.
Package gen is a command that can be used to bootstrap a new builtin package directory.
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 filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
Package filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
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.
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 fields that may be inferred from another mixed in value that "dominates" it.
Package trim removes fields that may be inferred from another mixed in value that "dominates" it.
Package internal exposes some cue internals to other packages.
Package internal exposes some cue internals to other packages.
ci
cli
cmd/embedpkg
embedpkg accepts a [packages] argument (see 'go help packages') and creates a map[string][]byte for each package argument, a map that represents the GoFiles for that package.
embedpkg accepts a [packages] argument (see 'go help packages') and creates a map[string][]byte for each package argument, a map that represents the GoFiles for that package.
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/dep
Package dep analyzes dependencies between values.
Package dep analyzes dependencies between values.
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.
core/walk
walk provides functions for visiting the nodes of an ADT tree.
walk provides functions for visiting the nodes of an ADT tree.
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.
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.
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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto