terraform/internal/addrs/remove_target_kind.go
2026-02-17 13:56:34 +00:00

34 lines
960 B
Go

// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package addrs
import "fmt"
// RemoveTargetKind represents the different kinds of object that a remove
// target address can refer to.
type RemoveTargetKind rune
//go:generate go tool golang.org/x/tools/cmd/stringer -type RemoveTargetKind
const (
// RemoveTargetModule indicates that a remove target refers to
// all instances of a particular module call.
RemoveTargetModule RemoveTargetKind = 'M'
// RemoveTargetResource indicates that a remove target refers to
// all instances of a particular resource.
RemoveTargetResource RemoveTargetKind = 'R'
)
func removeTargetKind(addr ConfigMoveable) RemoveTargetKind {
switch addr := addr.(type) {
case Module:
return RemoveTargetModule
case ConfigResource:
return RemoveTargetResource
default:
// The above should be exhaustive for all ConfigMoveable types.
panic(fmt.Sprintf("unsupported address type %T", addr))
}
}