func GetValuePropMap()

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
}