-- in.cue --
package kube
service: "node-exporter": {
	spec: {
		ports: [{
			name:     "metrics"
			port:     9100
			protocol: "TCP"
		}]
	}
}
deployment: "node-exporter": {
	spec: template: {
		spec: {
			containers: [{
				ports: [{
					containerPort: 9100
					name:          "scrape"
				}]
			}]
		}
	}
}
service: [ID=string]: {
	spec: {
		ports: [...{
			port:     int
			protocol: *"TCP" | "UDP"
			name:     string | *"client"
		}]
	}
}
deployment: [ID=string]: { }
deployment: [ID=_]: _spec & {}
_spec: {
	_name: string
	spec: template: {
		spec: containers: [{name: _name}]
	}
}
_spec: spec: template: spec: containers: [...{
	ports: [...{
		_export: *true | false // include the port in the service
	}]
}]
for k, v in deployment {
	service: "\(k)": {
		spec: selector: v.spec.template.metadata.labels
		spec: ports: [
			for c in v.spec.template.spec.containers
			for p in c.ports
			if p._export {
				let Port = p.containerPort // Port is an alias
				port:       *Port | int
				targetPort: *Port | int
			},
		]
	}
}
-- out/eval --
(struct){
  service: (struct){
    "node-exporter": (struct){
      spec: (struct){
        ports: (#list){
          0: (struct){
            name: (string){ "metrics" }
            port: (int){ 9100 }
            protocol: (string){ "TCP" }
            targetPort: (int){ |(*(int){ 9100 }, (int){ int }) }
          }
        }
        selector: (_|_){
          // [incomplete] service."node-exporter".spec.selector: undefined field: metadata:
          //     ./in.cue:47:35
        }
      }
    }
  }
  deployment: (struct){
    "node-exporter": (struct){
      spec: (struct){
        template: (struct){
          spec: (struct){
            containers: (#list){
              0: (struct){
                ports: (#list){
                  0: (struct){
                    containerPort: (int){ 9100 }
                    name: (string){ "scrape" }
                    _export(:kube): (bool){ |(*(bool){ true }, (bool){ false }) }
                  }
                }
                name: (string){ string }
              }
            }
          }
        }
      }
      _name(:kube): (string){ string }
    }
  }
  _spec(:kube): (struct){
    _name(:kube): (string){ string }
    spec: (struct){
      template: (struct){
        spec: (struct){
          containers: (#list){
            0: (struct){
              name: (string){ string }
              ports: (list){
              }
            }
          }
        }
      }
    }
  }
}
-- out/compile --
--- in.cue
{
  service: {
    "node-exporter": {
      spec: {
        ports: [
          {
            name: "metrics"
            port: 9100
            protocol: "TCP"
          },
        ]
      }
    }
  }
  deployment: {
    "node-exporter": {
      spec: {
        template: {
          spec: {
            containers: [
              {
                ports: [
                  {
                    containerPort: 9100
                    name: "scrape"
                  },
                ]
              },
            ]
          }
        }
      }
    }
  }
  service: {
    [string]: {
      spec: {
        ports: [
          ...{
            port: int
            protocol: (*"TCP"|"UDP")
            name: (string|*"client")
          },
        ]
      }
    }
  }
  deployment: {
    [string]: {}
  }
  deployment: {
    [_]: (〈1;_spec〉 & {})
  }
  _spec: {
    _name: string
    spec: {
      template: {
        spec: {
          containers: [
            {
              name: 〈4;_name〉
            },
          ]
        }
      }
    }
  }
  _spec: {
    spec: {
      template: {
        spec: {
          containers: [
            ...{
              ports: [
                ...{
                  _export: (*true|false)
                },
              ]
            },
          ]
        }
      }
    }
  }
  for k, v in 〈0;deployment〉 {
    service: {
      "\(〈2;k〉)": {
        spec: {
          selector: 〈4;v〉.spec.template.metadata.labels
        }
        spec: {
          ports: [
            for _, c in 〈4;v〉.spec.template.spec.containers for _, p in 〈0;c〉.ports if 〈0;p〉._export {
              port: (*〈0;let Port〉|int)
              targetPort: (*〈0;let Port〉|int)
            },
          ]
        }
      }
    }
  }
}
