| TODO: image field is not pre-evaluated (not a huge deal) |
| TODO: allow dynamic fields |
| |
| -- in.cue -- |
| key: "app01" |
| manifests: [ |
| { |
| deployment: #map: [string]: { name: string, image: string, desc: string } |
| deployment: #map: "\(key)": name: "app01" |
| }, |
| { |
| deployment: #map: app01: image: "image01" |
| // TODO: allow |
| // deployment: #map: "\("app03")": image: "image01" |
| } |
| ] |
| // unify |
| results: _ |
| for _, manifest in manifests { |
| results: manifest |
| } |
| -- out/eval -- |
| (struct){ |
| key: (string){ "app01" } |
| manifests: (#list){ |
| 0: (struct){ |
| deployment: (struct){ |
| #map: (#struct){ |
| app01: (#struct){ |
| name: (string){ "app01" } |
| image: (string){ string } |
| desc: (string){ string } |
| } |
| } |
| } |
| } |
| 1: (struct){ |
| deployment: (struct){ |
| #map: (#struct){ |
| app01: (#struct){ |
| image: (string){ "image01" } |
| } |
| } |
| } |
| } |
| } |
| results: (struct){ |
| deployment: (struct){ |
| #map: (#struct){ |
| app01: (#struct){ |
| image: (string){ "image01" } |
| name: (string){ "app01" } |
| desc: (string){ string } |
| } |
| } |
| } |
| } |
| } |
| -- out/compile -- |
| --- in.cue |
| { |
| key: "app01" |
| manifests: [ |
| { |
| deployment: { |
| #map: { |
| [string]: { |
| name: string |
| image: string |
| desc: string |
| } |
| } |
| } |
| deployment: { |
| #map: { |
| "\(〈3;key〉)": { |
| name: "app01" |
| } |
| } |
| } |
| }, |
| { |
| deployment: { |
| #map: { |
| app01: { |
| image: "image01" |
| } |
| } |
| } |
| }, |
| ] |
| results: _ |
| for _, manifest in 〈0;manifests〉 { |
| results: 〈1;manifest〉 |
| } |
| } |