in types/hcl.go [261:284]
func InjectReference(block *hclwrite.Block, refs []Reference) *hclwrite.Block {
if block.Body() == nil {
return block
}
search := make([]string, 0)
replacement := make([]string, 0)
for _, ref := range refs {
if stringValue, ok := ref.Value.(string); ok {
search = append(search, stringValue)
replacement = append(replacement, ref.Name)
}
}
for attrName, attr := range block.Body().Attributes() {
if input := helper.GetValueFromExpression(attr.Expr().BuildTokens(nil)); input != nil {
if output, found := helper.ToHclSearchReplace(input, search, replacement); found {
block.Body().SetAttributeRaw(attrName, helper.GetTokensForExpression(output))
}
}
}
for index := range block.Body().Blocks() {
InjectReference(block.Body().Blocks()[index], refs)
}
return block
}