]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blame - vendor/github.com/hashicorp/terraform/terraform/graph_walk.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / graph_walk.go
CommitLineData
bae9f6d2
JC
1package terraform
2
3import (
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.
11type 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.
23type NullGraphWalker struct{}
24
107c1cdb
ND
25func (NullGraphWalker) EnterPath(addrs.ModuleInstance) EvalContext { return new(MockEvalContext) }
26func (NullGraphWalker) ExitPath(addrs.ModuleInstance) {}
bae9f6d2 27func (NullGraphWalker) EnterVertex(dag.Vertex) {}
107c1cdb 28func (NullGraphWalker) ExitVertex(dag.Vertex, tfdiags.Diagnostics) {}
bae9f6d2 29func (NullGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode { return n }
107c1cdb 30func (NullGraphWalker) ExitEvalTree(dag.Vertex, interface{}, error) tfdiags.Diagnostics {
bae9f6d2
JC
31 return nil
32}