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)
| 184 | |
| 185 | // processModule performs all of the module logic and injects the content into the parent |
| 186 | func 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 | } |
no test coverage detected