MCPcopy Create free account
hub / github.com/aws-cloudformation/rain / processModule

Function processModule

cft/pkg/module.go:186–296  ·  view source on GitHub ↗

processModule performs all of the module logic and injects the content into the parent

(
	parsedModule *ParsedModule,
	outputNode *yaml.Node,
	t *cft.Template,
	moduleConfig *cft.ModuleConfig,
	parentModule *Module)

Source from the content-addressed store, hash-verified

184
185// processModule performs all of the module logic and injects the content into the parent
186func processModule(
187 parsedModule *ParsedModule,
188 outputNode *yaml.Node,
189 t *cft.Template,
190 moduleConfig *cft.ModuleConfig,
191 parentModule *Module) error {
192
193 if moduleConfig == nil {
194 return errors.New("moduleConfig is nil")
195 }
196
197 moduleNode := parsedModule.Node
198
199 m := &Module{}
200 m.Config = moduleConfig
201 m.Node = moduleNode
202 m.ParentTemplate = t
203 m.ParentModule = parentModule
204 m.Parsed = parsedModule
205
206 m.InitNodes()
207
208 err := m.ProcessConditions()
209 if err != nil {
210 return err
211 }
212
213 moduleAsTemplate := &cft.Template{
214 Node: &yaml.Node{
215 Kind: yaml.DocumentNode,
216 Content: []*yaml.Node{moduleNode},
217 },
218 }
219
220 transforms, err := moduleAsTemplate.GetSection(cft.Transform)
221 if err == nil {
222 // The module has Transforms
223 parentTransforms, err := t.GetSection(cft.Transform)
224 if err != nil {
225 parentTransforms, _ = t.AddMapSection(cft.Transform)
226 }
227 merged := node.MakeSequence([]string{})
228 both := []*yaml.Node{transforms, parentTransforms}
229 for _, tr := range both {
230 if tr.Kind == yaml.ScalarNode {
231 merged.Content = append(merged.Content, tr)
232 } else {
233 merged.Content = append(merged.Content, tr.Content...)
234 }
235 }
236 merged = node.Clone(merged)
237 *parentTransforms = *merged
238 }
239
240 err = processRainSection(moduleAsTemplate)
241 if err != nil {
242 return err
243 }

Callers 2

processModulesSectionFunction · 0.85

Calls 13

InitNodesMethod · 0.95
ProcessConditionsMethod · 0.95
GetSectionMethod · 0.95
ValidateOverridesMethod · 0.95
ProcessResourcesMethod · 0.95
ProcessOutputsMethod · 0.95
FnInvokeMethod · 0.95
MakeSequenceFunction · 0.92
CloneFunction · 0.92
processRainSectionFunction · 0.85
processAddedSectionsFunction · 0.85
ExtraIntrinsicsFunction · 0.85

Tested by

no test coverage detected