github.com/hashicorp/terraform-plugin-sdk@v1.17.2/terraform/graph_walk.go (about)

     1  package terraform
     2  
     3  import (
     4  	"github.com/hashicorp/terraform-plugin-sdk/internal/addrs"
     5  	"github.com/hashicorp/terraform-plugin-sdk/internal/dag"
     6  	"github.com/hashicorp/terraform-plugin-sdk/internal/tfdiags"
     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 {
    12  	EnterPath(addrs.ModuleInstance) EvalContext
    13  	ExitPath(addrs.ModuleInstance)
    14  	EnterVertex(dag.Vertex)
    15  	ExitVertex(dag.Vertex, tfdiags.Diagnostics)
    16  	EnterEvalTree(dag.Vertex, EvalNode) EvalNode
    17  	ExitEvalTree(dag.Vertex, interface{}, error) tfdiags.Diagnostics
    18  }
    19  
    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  
    25  func (NullGraphWalker) EnterPath(addrs.ModuleInstance) EvalContext      { return new(MockEvalContext) }
    26  func (NullGraphWalker) ExitPath(addrs.ModuleInstance)                   {}
    27  func (NullGraphWalker) EnterVertex(dag.Vertex)                          {}
    28  func (NullGraphWalker) ExitVertex(dag.Vertex, tfdiags.Diagnostics)      {}
    29  func (NullGraphWalker) EnterEvalTree(v dag.Vertex, n EvalNode) EvalNode { return n }
    30  func (NullGraphWalker) ExitEvalTree(dag.Vertex, interface{}, error) tfdiags.Diagnostics {
    31  	return nil
    32  }