blob: 79d33197956ea7aedb5938b4178e66167efb3289 [file] [log] [blame] [edit]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package statekeys
import (
"fmt"
"github.com/hashicorp/terraform/internal/stacks/stackaddrs"
)
var (
_ Key = Variable{}
)
type Variable struct {
VariableAddr stackaddrs.InputVariable
}
func parseVariable(s string) (Key, error) {
addrRaw, ok := finalKeyField(s)
if !ok {
return nil, fmt.Errorf("unsupported extra field in component instance key")
}
addr, diags := stackaddrs.ParseAbsInputVariableStr(addrRaw)
if diags.HasErrors() {
return nil, fmt.Errorf("variable key has invalid output address %q", addrRaw)
}
if !addr.Stack.IsRoot() {
return nil, fmt.Errorf("variable key was for non-root stack %q", addrRaw)
}
return Variable{
VariableAddr: addr.Item,
}, nil
}
func (v Variable) KeyType() KeyType {
return VariableType
}
func (v Variable) rawSuffix() string {
return v.VariableAddr.String()
}