diff --git a/.changes/v1.14/ENHANCEMENTS-20250919-115253.yaml b/.changes/v1.14/ENHANCEMENTS-20250919-115253.yaml new file mode 100644 index 000000000000..6f521d0c0173 --- /dev/null +++ b/.changes/v1.14/ENHANCEMENTS-20250919-115253.yaml @@ -0,0 +1,5 @@ +kind: ENHANCEMENTS +body: '`terraform stacks` command support for `-help` flag' +time: 2025-09-19T11:52:53.923764-04:00 +custom: + Issue: "37645" diff --git a/internal/command/stacks.go b/internal/command/stacks.go index 472d0ede4ec6..95e310648dd0 100644 --- a/internal/command/stacks.go +++ b/internal/command/stacks.go @@ -82,7 +82,6 @@ func (c *StacksCommand) realRun(args []string, stdout, stderr io.Writer) int { args = c.Meta.process(args) cmdFlags := c.Meta.defaultFlagSet("stacks") cmdFlags.StringVar(&pluginCacheDirOverride, "plugin-cache-dir", "", "plugin cache directory") - cmdFlags.Usage = func() { c.Ui.Error(c.Help()) } cmdFlags.Parse(args) if pluginCacheDirOverride != "" { @@ -379,8 +378,17 @@ func (c *StacksCommand) Run(args []string) int { // Help returns help text for the stacks command. func (c *StacksCommand) Help() string { helpText := new(bytes.Buffer) - if exitCode := c.realRun([]string{}, helpText, io.Discard); exitCode != 0 { - return "" + errorText := new(bytes.Buffer) + + parsedArgs := []string{} + for _, arg := range os.Args[1:] { + if arg == "stacks" { + continue // skip stacks command name + } + parsedArgs = append(parsedArgs, arg) + } + if exitCode := c.realRun(parsedArgs, helpText, errorText); exitCode != 0 { + return errorText.String() } return helpText.String()