| package lang |
| |
| import ( |
| "sync" |
| |
| "github.com/zclconf/go-cty/cty/function" |
| |
| "github.com/hashicorp/terraform/addrs" |
| ) |
| |
| // 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 |
| } |