blob: edbe97e62ccff80dd8697f16d4ff8cff0bfbc85f [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// 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))
}
}