]>
Commit | Line | Data |
---|---|---|
bae9f6d2 JC |
1 | package terraform |
2 | ||
3 | import ( | |
107c1cdb | 4 | "github.com/hashicorp/terraform/addrs" |
bae9f6d2 | 5 | "github.com/hashicorp/terraform/dag" |
107c1cdb | 6 | "github.com/hashicorp/terraform/tfdiags" |
bae9f6d2 JC |
7 | ) |
8 | ||
9 | // GraphWalker is an interface that can be implemented that when used | |
10 | // with Graph.Walk will invoke the given callbacks under certain events. | |
11 | type GraphWalker interface { | |
107c1cdb ND |
12 | EnterPath(addrs.ModuleInstance) EvalContext |
13 | ExitPath(addrs.ModuleInstance) | |
bae9f6d2 | 14 | EnterVertex(dag.Vertex) |
107c1cdb | 15 | ExitVertex(dag.Vertex, tfdiags.Diagnostics) |
bae9f6d2 | 16 | EnterEvalTree(dag.Vertex, EvalNode) EvalNode |
107c1cdb | 17 | ExitEvalTree(dag.Vertex, interface{}, error) tfdiags.Diagnostics |
bae9f6d2 JC |
18 | } |
19 | ||
bae9f6d2 JC |
20 | // NullGraphWalker is a GraphWalker implementation that does nothing. |
21 | // This can be embedded within other GraphWalker implementations for easily | |
22 | // implementing all the required functions. | |
23 | type NullGraphWalker struct{} | |
24 | ||
107c1cdb ND |
25 | func (NullGraphWalker) EnterPath(addrs.ModuleInstance) EvalContext { return new(MockEvalContext) } |
26 | func (NullGraphWalker) ExitPath(addrs.ModuleInstance) {} | |
bae9f6d2 | 27 | func (NullGraphWalker) EnterVertex(dag.Vertex) {} |
107c1cdb | 28 | func (NullGraphWalker) ExitVertex(dag.Vertex, tfdiags.Diagnostics) {} |
bae9f6d2 | 29 | func (NullGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode { return n } |
107c1cdb | 30 | func (NullGraphWalker) ExitEvalTree(dag.Vertex, interface{}, error) tfdiags.Diagnostics { |
bae9f6d2 JC |
31 | return nil |
32 | } |