mirror of
https://github.com/hashicorp/terraform.git
synced 2026-03-21 18:10:30 -04:00
28 lines
917 B
Go
28 lines
917 B
Go
// Copyright IBM Corp. 2014, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package workdir
|
|
|
|
import (
|
|
"github.com/hashicorp/terraform/internal/configs/configschema"
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
// ConfigState describes a configuration block, and is used to make that config block stateful.
|
|
type ConfigState interface {
|
|
Empty() bool
|
|
Config(schema *configschema.Block) (cty.Value, error)
|
|
SetConfig(val cty.Value, schema *configschema.Block) error
|
|
}
|
|
|
|
// DeepCopier implementations can return deep copies of themselves for use elsewhere
|
|
// without mutating the original value.
|
|
type DeepCopier[T any] interface {
|
|
DeepCopy() *T
|
|
}
|
|
|
|
// PlanDataProvider implementations can return a representation of their data that's
|
|
// appropriate for storing in a plan file.
|
|
type PlanDataProvider[T any] interface {
|
|
PlanData(storeSchema *configschema.Block, providerSchema *configschema.Block, workspaceName string) (*T, error)
|
|
}
|