func InjectReference()

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
}