blob: 03d201d92c75ce336e466f839804b97b79f34f50 [file] [log] [blame]
cue eval templates.cue
cmp stdout expect-stdout-cue
-- frontmatter.toml --
title = "Templates"
description = ""
-- text.md --
One of CUE's most powerful features is the ability
to specify optional fields in bulk.
This allows one to specify constraints,
or templates,
to be unified with each field of a struct.
An optional field set is an expression in square brackets
to specify to which fields to apply a constraint
(currently only `string`, or all fields is supported).
Using an alias in the square brackets binds the
label of the matched field to the given identifier,
which can then be used within the template.
-- templates.cue --
// The following struct is unified with all elements in job.
// The name of each element is bound to Name and visible in the struct.
job: [Name=_]: {
name: Name
replicas: uint | *1
command: string
}
job: list: command: "ls"
job: nginx: {
command: "nginx"
replicas: 2
}
-- expect-stdout-cue --
job: {
list: {
name: "list"
replicas: 1
command: "ls"
}
nginx: {
name: "nginx"
replicas: 2
command: "nginx"
}
}