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)) }