github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/cloudformation/parser/fn_join.go (about) 1 package parser 2 3 import ( 4 "strings" 5 6 "github.com/aquasecurity/trivy-iac/pkg/scanners/cloudformation/cftypes" 7 ) 8 9 func ResolveJoin(property *Property) (resolved *Property, success bool) { 10 if !property.isFunction() { 11 return property, true 12 } 13 14 refValue := property.AsMap()["Fn::Join"].AsList() 15 16 if len(refValue) != 2 { 17 return abortIntrinsic(property, "Fn::Join should have exactly 2 values, returning original Property") 18 } 19 20 joiner := refValue[0].AsString() 21 items := refValue[1].AsList() 22 23 var itemValues []string 24 for _, item := range items { 25 resolved, success := item.resolveValue() 26 if success { 27 itemValues = append(itemValues, resolved.AsString()) 28 } 29 } 30 31 joined := strings.Join(itemValues, joiner) 32 33 return property.deriveResolved(cftypes.String, joined), true 34 }