github.com/hashicorp/terraform-plugin-sdk@v1.17.2/terraform/transform_variable.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/configs"
     6  )
     7  
     8  // RootVariableTransformer is a GraphTransformer that adds all the root
     9  // variables to the graph.
    10  //
    11  // Root variables are currently no-ops but they must be added to the
    12  // graph since downstream things that depend on them must be able to
    13  // reach them.
    14  type RootVariableTransformer struct {
    15  	Config *configs.Config
    16  }
    17  
    18  func (t *RootVariableTransformer) Transform(g *Graph) error {
    19  	// We can have no variables if we have no config.
    20  	if t.Config == nil {
    21  		return nil
    22  	}
    23  
    24  	// We're only considering root module variables here, since child
    25  	// module variables are handled by ModuleVariableTransformer.
    26  	vars := t.Config.Module.Variables
    27  
    28  	// Add all variables here
    29  	for _, v := range vars {
    30  		node := &NodeRootVariable{
    31  			Addr: addrs.InputVariable{
    32  				Name: v.Name,
    33  			},
    34  			Config: v,
    35  		}
    36  		g.Add(node)
    37  	}
    38  
    39  	return nil
    40  }