in types/hcl.go [287:311]
func GetValuePropMap(block *hclwrite.Block, prefix string) map[string]string {
res := make(map[string]string)
if block == nil {
return res
}
for attrName, attr := range block.Body().Attributes() {
res[strings.TrimSpace(string(attr.Expr().BuildTokens(nil).Bytes()))] = prefix + "." + attrName
}
blocksMap := make(map[string][]*hclwrite.Block)
for _, block := range block.Body().Blocks() {
if len(blocksMap[block.Type()]) == 0 {
blocksMap[block.Type()] = make([]*hclwrite.Block, 0)
}
blocksMap[block.Type()] = append(blocksMap[block.Type()], block)
}
for blockType, arr := range blocksMap {
for index, block := range arr {
propValueMap := GetValuePropMap(block, fmt.Sprintf("%s.%s.%d", prefix, blockType, index))
for k, v := range propValueMap {
res[k] = v
}
}
}
return res
}