func()

in pkg/data_data_source.go [27:63]


func (dd *DataSourceData) ExecuteDuringPlan() error {
	src := dd.BaseBlock.Config().(*MetaProgrammingTFConfig).DataBlocks()
	var matched []*terraform.RootBlock
	ds := linq.From(src)
	if dd.DataSourceType != "" {
		ds = ds.Where(func(i interface{}) bool {
			return i.(*terraform.RootBlock).Labels[0] == dd.DataSourceType
		})
	}
	if dd.UseForEach {
		ds = ds.Where(func(i interface{}) bool {
			return i.(*terraform.RootBlock).ForEach != nil
		})
	}
	if dd.UseCount {
		ds = ds.Where(func(i interface{}) bool {
			return i.(*terraform.RootBlock).Count != nil
		})
	}
	ds.ToSlice(&matched)
	dataBlocks := make(map[string]map[string]cty.Value)
	for _, b := range matched {
		dataType := b.Labels[0]
		m, ok := dataBlocks[dataType]
		if !ok {
			m = make(map[string]cty.Value)
			dataBlocks[dataType] = m
		}
		m[b.Labels[1]] = b.EvalContext()
	}
	obj := make(map[string]cty.Value)
	for k, m := range dataBlocks {
		obj[k] = cty.ObjectVal(m)
	}
	dd.Result = cty.ObjectVal(obj)
	return nil
}