func()

in pkg/data_resource.go [27:63]


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