// Copyright (c) The OpenTofu Authors // SPDX-License-Identifier: MPL-2.0 // Copyright (c) 2023 HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package collections import ( "github.com/opentofu/opentofu/internal/command/jsonformat/computed" "github.com/opentofu/opentofu/internal/plans" ) type ProcessKey func(key string) computed.Diff func TransformMap[Input any](before, after map[string]Input, keys []string, process ProcessKey) (map[string]computed.Diff, plans.Action) { current := plans.NoOp if before != nil && after == nil { current = plans.Delete } if before == nil && after != nil { current = plans.Create } elements := make(map[string]computed.Diff) for _, key := range keys { elements[key] = process(key) current = CompareActions(current, elements[key].Action) } return elements, current }