blob: 54aee302d70bb9293ddc2a7c82ac909d8c18e6bb [file] [log] [blame] [view]
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +01001<!--
2 Copyright 2018 The CUE Authors
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15-->
16
17
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010018# The CUE Configuration Language
19
20_Configure, Unify, Execute_
21
22CUE is an open source configuration language which aims
23to make complex configurations more manageable and usable.
24
25CUE is a constrained-based language.
26Constraints provide a powerful yet simple alternative
27to inheritance, a common source of complexity
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010028with other configuration languages.
29
30The CUE tooling also provides integrated declarative scripting
31aimed at simplifying putting configurations to good use while
32giving static analyis tools maximum domain knowledge.
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010033
Marcel van Lohuizendd5e5892018-11-22 23:29:16 +010034Some highlights:
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010035
36- JSON superset: get started quickly
37- convert existing YAML and JSON
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010038- declarative scripting
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010039- automatically simplify configurations
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010040- formatter
41- arbitrary-precision arithmetic
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010042- rich APIs designed for automated tooling
43- a formalism conducive to automated reasoning
44- generate CUE templates from source code
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010045- generate source code from CUE configurations (TODO)
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010046
47
48### Download and Install
49
50#### Install From Source
51
52If you already have Go installed, the short version is:
53
54```
55go get -u cuelang.org/go/cmd/cue
56```
57
58This will install the `cue` command line tool.
59
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010060For more details see [Installing CUE](./doc/install.md).
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010061
62
63### Learning CUE
64
65A demonstration of how to convert and restructure and existing
66set of Kubernetes configurations is available in
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010067[written form](./doc/examples/kubernetes/Readme.md) or as
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010068[video]().
69
70### References
71
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010072- [Language Specification](./doc/ref/spec.md): official CUE Language specification.
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010073
74- [API](https://godoc.org/cuelang.org/go/cue): the API on godoc.org
75
76- [Builtin packages](https://godoc.org/cuelang.org/go/pkg): builtins available from CUE programs
77
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010078- [`cue` Command line reference](./doc/cmd/cue.md): the `cue` command
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010079
80
81### Contributing
82
83Our canonical Git repository is located at https://cue.googlesource.com.
84
Marcel van Lohuizen36d889f2018-12-16 10:43:17 +010085To contribute, please read the [Contribution Guidelines](./CONTRIBUTING.md).
Marcel van Lohuizen969a7832018-11-22 19:43:51 +010086
87##### Note that we do not accept pull requests and that we use the issue tracker for bug reports and proposals only.
88
89Unless otherwise noted, the CUE source files are distributed
90under the Apache 2.0 license found in the LICENSE file.
91
92