in pkg/data_variable.go [26:54]
func (dd *DataVariable) ExecuteDuringPlan() error {
src := dd.BaseBlock.Config().(*MetaProgrammingTFConfig).VariableBlocks()
var matched []*terraform.RootBlock
ds := linq.From(src)
if dd.ExpectedNameName != "" {
ds = ds.Where(func(i interface{}) bool {
return i.(*terraform.RootBlock).Labels[0] == dd.ExpectedNameName
})
}
if dd.ExpectedType != "" {
ds = ds.Where(func(i interface{}) bool {
typeAttr, ok := i.(*terraform.RootBlock).Attributes["type"]
if !ok {
return false
}
typeVal := typeAttr.String()
return typeVal == dd.ExpectedType
})
}
ds.ToSlice(&matched)
variableBlocks := make(map[string]cty.Value)
for _, block := range matched {
variableName := block.Labels[0]
variableBlocks[variableName] = block.EvalContext()
}
dd.Result = cty.ObjectVal(variableBlocks)
return nil
}