github.com/kevinklinger/open_terraform@v1.3.6/noninternal/terraform/graph_walk.go (about) 1 package terraform 2 3 import ( 4 "github.com/kevinklinger/open_terraform/noninternal/addrs" 5 "github.com/kevinklinger/open_terraform/noninternal/tfdiags" 6 ) 7 8 // GraphWalker is an interface that can be implemented that when used 9 // with Graph.Walk will invoke the given callbacks under certain events. 10 type GraphWalker interface { 11 EvalContext() EvalContext 12 EnterPath(addrs.ModuleInstance) EvalContext 13 ExitPath(addrs.ModuleInstance) 14 Execute(EvalContext, GraphNodeExecutable) tfdiags.Diagnostics 15 } 16 17 // NullGraphWalker is a GraphWalker implementation that does nothing. 18 // This can be embedded within other GraphWalker implementations for easily 19 // implementing all the required functions. 20 type NullGraphWalker struct{} 21 22 func (NullGraphWalker) EvalContext() EvalContext { return new(MockEvalContext) } 23 func (NullGraphWalker) EnterPath(addrs.ModuleInstance) EvalContext { return new(MockEvalContext) } 24 func (NullGraphWalker) ExitPath(addrs.ModuleInstance) {} 25 func (NullGraphWalker) Execute(EvalContext, GraphNodeExecutable) tfdiags.Diagnostics { return nil }