From 2e62e03b6424324a27cafb4665a65d1c959d2ac6 Mon Sep 17 00:00:00 2001 From: Alisdair McDiarmid Date: Wed, 27 Jan 2021 13:54:59 -0500 Subject: [PATCH] cli: Remove dead code for output -module flag The -module flag to terraform output has been unimplemented since 0.12. This commit removes some dead code and the specific error message for this flag. The website documentation for output does not mention this flag, so it is unchanged. --- command/apply.go | 11 +++-------- command/output.go | 31 +++---------------------------- command/output_test.go | 29 ----------------------------- command/refresh.go | 3 +-- 4 files changed, 7 insertions(+), 67 deletions(-) diff --git a/command/apply.go b/command/apply.go index 6e2d536c4..fae0a58ed 100644 --- a/command/apply.go +++ b/command/apply.go @@ -6,7 +6,6 @@ import ( "sort" "strings" - "github.com/hashicorp/terraform/addrs" "github.com/hashicorp/terraform/backend" "github.com/hashicorp/terraform/repl" "github.com/hashicorp/terraform/states" @@ -178,7 +177,7 @@ func (c *ApplyCommand) Run(args []string) int { } if !c.Destroy { - if outputs := outputsAsString(op.State, addrs.RootModuleInstance, true); outputs != "" { + if outputs := outputsAsString(op.State, true); outputs != "" { c.Ui.Output(c.Colorize().Color(outputs)) } } @@ -315,16 +314,12 @@ Options: return strings.TrimSpace(helpText) } -func outputsAsString(state *states.State, modPath addrs.ModuleInstance, includeHeader bool) string { +func outputsAsString(state *states.State, includeHeader bool) string { if state == nil { return "" } - ms := state.Module(modPath) - if ms == nil { - return "" - } - + ms := state.RootModule() outputs := ms.OutputValues outputBuf := new(bytes.Buffer) if len(outputs) > 0 { diff --git a/command/output.go b/command/output.go index f1d446a3f..8cc7426f6 100644 --- a/command/output.go +++ b/command/output.go @@ -9,7 +9,6 @@ import ( "github.com/zclconf/go-cty/cty/convert" ctyjson "github.com/zclconf/go-cty/cty/json" - "github.com/hashicorp/terraform/addrs" "github.com/hashicorp/terraform/repl" "github.com/hashicorp/terraform/states" "github.com/hashicorp/terraform/tfdiags" @@ -27,13 +26,12 @@ type OutputCommand struct { func (c *OutputCommand) Run(args []string) int { args = c.Meta.process(args) - var module, statePath string + var statePath string var jsonOutput, rawOutput bool cmdFlags := c.Meta.defaultFlagSet("output") cmdFlags.BoolVar(&jsonOutput, "json", false, "json") cmdFlags.BoolVar(&rawOutput, "raw", false, "raw") cmdFlags.StringVar(&statePath, "state", "", "path") - cmdFlags.StringVar(&module, "module", "", "module") cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } if err := cmdFlags.Parse(args); err != nil { c.Ui.Error(fmt.Sprintf("Error parsing command-line flags: %s\n", err.Error())) @@ -101,35 +99,12 @@ func (c *OutputCommand) Run(args []string) int { return 1 } - moduleAddr := addrs.RootModuleInstance - if module != "" { - // This option was supported prior to 0.12.0, but no longer supported - // because we only persist the root module outputs in state. - // (We could perhaps re-introduce this by doing an eval walk here to - // repopulate them, similar to how "terraform console" does it, but - // that requires more thought since it would imply this command - // supporting remote operations, which is a big change.) - diags = diags.Append(tfdiags.Sourceless( - tfdiags.Error, - "Unsupported option", - "The -module option is no longer supported since Terraform 0.12, because now only root outputs are persisted in the state.", - )) - c.showDiagnostics(diags) - return 1 - } - state := stateStore.State() if state == nil { state = states.NewState() } - mod := state.Module(moduleAddr) - if mod == nil { - c.Ui.Error(fmt.Sprintf( - "The module %s could not be found. There is nothing to output.", - module)) - return 1 - } + mod := state.RootModule() if !jsonOutput && (state.Empty() || len(mod.OutputValues) == 0) { diags = diags.Append(tfdiags.Sourceless( @@ -190,7 +165,7 @@ func (c *OutputCommand) Run(args []string) int { c.Ui.Output(string(jsonOutputs)) return 0 } else { - c.Ui.Output(outputsAsString(state, moduleAddr, false)) + c.Ui.Output(outputsAsString(state, false)) return 0 } } diff --git a/command/output_test.go b/command/output_test.go index 8b2edc3a6..0faca69fd 100644 --- a/command/output_test.go +++ b/command/output_test.go @@ -268,35 +268,6 @@ func TestOutput_jsonEmptyOutputs(t *testing.T) { } } -func TestMissingModuleOutput(t *testing.T) { - originalState := states.BuildState(func(s *states.SyncState) { - s.SetOutputValue( - addrs.OutputValue{Name: "foo"}.Absolute(addrs.RootModuleInstance), - cty.StringVal("bar"), - false, - ) - }) - statePath := testStateFile(t, originalState) - - ui := new(cli.MockUi) - c := &OutputCommand{ - Meta: Meta{ - testingOverrides: metaOverridesForProvider(testProvider()), - Ui: ui, - }, - } - - args := []string{ - "-state", statePath, - "-module", "not_existing_module", - "blah", - } - - if code := c.Run(args); code != 1 { - t.Fatalf("bad: \n%s", ui.ErrorWriter.String()) - } -} - func TestOutput_badVar(t *testing.T) { originalState := states.BuildState(func(s *states.SyncState) { s.SetOutputValue( diff --git a/command/refresh.go b/command/refresh.go index 36c40633f..a393f0c03 100644 --- a/command/refresh.go +++ b/command/refresh.go @@ -4,7 +4,6 @@ import ( "fmt" "strings" - "github.com/hashicorp/terraform/addrs" "github.com/hashicorp/terraform/backend" "github.com/hashicorp/terraform/tfdiags" ) @@ -96,7 +95,7 @@ func (c *RefreshCommand) Run(args []string) int { return op.Result.ExitStatus() } - if outputs := outputsAsString(op.State, addrs.RootModuleInstance, true); outputs != "" { + if outputs := outputsAsString(op.State, true); outputs != "" { c.Ui.Output(c.Colorize().Color(outputs)) }