in cmd/hub/compose/elaborate.go [530:597]
func transformApplicationIntoComponent(stack *manifest.Manifest, components []manifest.Manifest) []manifest.Manifest {
name := nameWithoutVersion(stack.Meta.Name)
stack.Lifecycle.Order = append(stack.Lifecycle.Order, name)
applicationRef := manifest.ComponentRef{
Name: name,
Source: stack.Meta.Source,
}
stack.Components = append(stack.Components, applicationRef)
componentOutputs := make([]manifest.Output, 0, len(stack.Outputs))
stackOutputs := make([]manifest.Output, 0, len(stack.Outputs))
for _, output := range stack.Outputs {
if !util.Empty(output.Value) || output.FromTfVar != "" {
componentOutputs = append(componentOutputs, output)
stackOutput := manifest.Output{
Name: output.Name,
Value: fmt.Sprintf("${%s:%s}", name, output.Name),
Brief: output.Brief,
Description: output.Description,
}
stackOutputs = append(stackOutputs, stackOutput)
} else {
stackOutputs = append(stackOutputs, output)
}
}
componentParameters := make([]manifest.Parameter, 0, len(stack.Parameters))
stackParameters := make([]manifest.Parameter, 0, len(stack.Parameters))
for _, param := range stack.Parameters {
if param.Component == "" || param.Component == name {
componentParameters = append(componentParameters,
manifest.Parameter{
Name: param.Name,
Env: param.Env,
})
}
param.Env = ""
stackParameters = append(stackParameters, param)
}
componentManifest := manifest.Manifest{
Version: stack.Version,
Kind: "component",
Meta: stack.Meta,
Lifecycle: manifest.Lifecycle{
Bare: stack.Lifecycle.Bare,
Verbs: stack.Lifecycle.Verbs,
ReadyConditions: stack.Lifecycle.ReadyConditions,
Requires: stack.Lifecycle.Requires,
Options: stack.Lifecycle.Options,
},
Provides: stack.Provides,
Requires: stack.Requires,
Parameters: componentParameters,
Templates: stack.Templates,
Outputs: componentOutputs,
}
componentManifest.Meta.Name = name
components = append(components, componentManifest)
stack.Outputs = stackOutputs
stack.Parameters = stackParameters
stack.Templates = manifest.TemplateSetup{}
return components
}