diff --git a/command/providers.go b/command/providers.go index 7dc2ddf6ad..7faefcf7b2 100644 --- a/command/providers.go +++ b/command/providers.go @@ -2,8 +2,10 @@ package command import ( "fmt" + "path/filepath" "sort" + "github.com/hashicorp/terraform/config" "github.com/hashicorp/terraform/moduledeps" "github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform/tfdiags" @@ -41,6 +43,30 @@ func (c *ProvidersCommand) Run(args []string) int { var diags tfdiags.Diagnostics + empty, err := config.IsEmptyDir(configPath) + if err != nil { + diags = diags.Append(tfdiags.Sourceless( + tfdiags.Error, + "Error validating configuration directory", + fmt.Sprintf("Terraform encountered an unexpected error while verifying that the given configuration directory is valid: %s.", err), + )) + c.showDiagnostics(diags) + return 1 + } + if empty { + absPath, err := filepath.Abs(configPath) + if err != nil { + absPath = configPath + } + diags = diags.Append(tfdiags.Sourceless( + tfdiags.Error, + "No configuration files", + fmt.Sprintf("The directory %s contains no Terraform configuration files.", absPath), + )) + c.showDiagnostics(diags) + return 1 + } + config, configDiags := c.loadConfig(configPath) diags = diags.Append(configDiags) if configDiags.HasErrors() { diff --git a/command/providers_test.go b/command/providers_test.go index 163cae1290..c1a788cf3b 100644 --- a/command/providers_test.go +++ b/command/providers_test.go @@ -66,7 +66,7 @@ func TestProviders_noConfigs(t *testing.T) { } output := ui.ErrorWriter.String() - expectedErrMsg := "No configuration files found" + expectedErrMsg := "No configuration files" if !strings.Contains(output, expectedErrMsg) { t.Errorf("Expected error message: %s\nGiven output: %s", expectedErrMsg, output) }