| // Copyright (c) The OpenTofu Authors | |
| // SPDX-License-Identifier: MPL-2.0 | |
| // Copyright (c) 2023 HashiCorp, Inc. | |
| // SPDX-License-Identifier: MPL-2.0 | |
| package tofu | |
| import ( | |
| "context" | |
| "github.com/opentofu/opentofu/internal/addrs" | |
| ) | |
| // ExternalReferenceTransformer will add a GraphNodeReferencer into the graph | |
| // that makes no changes to the graph itself but, by referencing the addresses | |
| // within ExternalReferences, ensures that any temporary nodes that are required | |
| // by an external caller, such as the tofu testing framework, are not | |
| // skipped because they are not referenced from within the module. | |
| type ExternalReferenceTransformer struct { | |
| ExternalReferences []*addrs.Reference | |
| } | |
| func (t *ExternalReferenceTransformer) Transform(_ context.Context, g *Graph) error { | |
| if len(t.ExternalReferences) == 0 { | |
| return nil | |
| } | |
| g.Add(&nodeExternalReference{ | |
| ExternalReferences: t.ExternalReferences, | |
| }) | |
| return nil | |
| } |