// 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() }