mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-28 18:01:01 -06:00
cdd9464f9a
This is part of a general effort to move all of Terraform's non-library package surface under internal in order to reinforce that these are for internal use within Terraform only. If you were previously importing packages under this prefix into an external codebase, you could pin to an earlier release tag as an interim solution until you've make a plan to achieve the same functionality some other way.
52 lines
1.8 KiB
Go
52 lines
1.8 KiB
Go
package lang
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/zclconf/go-cty/cty/function"
|
|
|
|
"github.com/hashicorp/terraform/internal/addrs"
|
|
"github.com/hashicorp/terraform/internal/experiments"
|
|
)
|
|
|
|
// Scope is the main type in this package, allowing dynamic evaluation of
|
|
// blocks and expressions based on some contextual information that informs
|
|
// which variables and functions will be available.
|
|
type Scope struct {
|
|
// Data is used to resolve references in expressions.
|
|
Data Data
|
|
|
|
// SelfAddr is the address that the "self" object should be an alias of,
|
|
// or nil if the "self" object should not be available at all.
|
|
SelfAddr addrs.Referenceable
|
|
|
|
// BaseDir is the base directory used by any interpolation functions that
|
|
// accept filesystem paths as arguments.
|
|
BaseDir string
|
|
|
|
// PureOnly can be set to true to request that any non-pure functions
|
|
// produce unknown value results rather than actually executing. This is
|
|
// important during a plan phase to avoid generating results that could
|
|
// then differ during apply.
|
|
PureOnly bool
|
|
|
|
funcs map[string]function.Function
|
|
funcsLock sync.Mutex
|
|
|
|
// activeExperiments is an optional set of experiments that should be
|
|
// considered as active in the module that this scope will be used for.
|
|
// Callers can populate it by calling the SetActiveExperiments method.
|
|
activeExperiments experiments.Set
|
|
|
|
// ConsoleMode can be set to true to request any console-only functions are
|
|
// included in this scope.
|
|
ConsoleMode bool
|
|
}
|
|
|
|
// SetActiveExperiments allows a caller to declare that a set of experiments
|
|
// is active for the module that the receiving Scope belongs to, which might
|
|
// then cause the scope to activate some additional experimental behaviors.
|
|
func (s *Scope) SetActiveExperiments(active experiments.Set) {
|
|
s.activeExperiments = active
|
|
}
|