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 }