]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/terraform/terraform/transform_import_provider.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / terraform / transform_import_provider.go
index 3673771ca2517a0624848eb3df59e9e69848ea34..c1945f02d36b53da57bcdcb6f828c75ec0ecb919 100644 (file)
@@ -2,7 +2,10 @@ package terraform
 
 import (
        "fmt"
-       "strings"
+
+       "github.com/hashicorp/hcl2/hcl"
+       "github.com/hashicorp/terraform/addrs"
+       "github.com/hashicorp/terraform/tfdiags"
 )
 
 // ImportProviderValidateTransformer is a GraphTransformer that goes through
@@ -10,6 +13,8 @@ import (
 type ImportProviderValidateTransformer struct{}
 
 func (t *ImportProviderValidateTransformer) Transform(g *Graph) error {
+       var diags tfdiags.Diagnostics
+
        for _, v := range g.Vertices() {
                // We only care about providers
                pv, ok := v.(GraphNodeProvider)
@@ -24,15 +29,16 @@ func (t *ImportProviderValidateTransformer) Transform(g *Graph) error {
                }
 
                for _, ref := range rn.References() {
-                       if !strings.HasPrefix(ref, "var.") {
-                               return fmt.Errorf(
-                                       "Provider %q depends on non-var %q. Providers for import can currently\n"+
-                                               "only depend on variables or must be hardcoded. You can stop import\n"+
-                                               "from loading configurations by specifying `-config=\"\"`.",
-                                       pv.ProviderName(), ref)
+                       if _, ok := ref.Subject.(addrs.InputVariable); !ok {
+                               diags = diags.Append(&hcl.Diagnostic{
+                                       Severity: hcl.DiagError,
+                                       Summary:  "Invalid provider dependency for import",
+                                       Detail:   fmt.Sprintf("The configuration for %s depends on %s. Providers used with import must either have literal configuration or refer only to input variables.", pv.ProviderAddr(), ref.Subject.String()),
+                                       Subject:  ref.SourceRange.ToHCL().Ptr(),
+                               })
                        }
                }
        }
 
-       return nil
+       return diags.Err()
 }