From 2434b319b3acc12387c7141591ff0cda30a1042d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 15:36:40 +0200 Subject: [PATCH] Backport of Handle `-help` usage in stacks plugin into v1.14 (#37655) * backport of commit 10f00d437f70b25b957acc62ae407aa868184526 * backport of commit 7f0ef4c8d0541e1374d029a98b591c93c5a013a3 --------- Co-authored-by: Mark DeCrane --- .changes/v1.14/ENHANCEMENTS-20250919-115253.yaml | 5 +++++ internal/command/stacks.go | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 .changes/v1.14/ENHANCEMENTS-20250919-115253.yaml diff --git a/.changes/v1.14/ENHANCEMENTS-20250919-115253.yaml b/.changes/v1.14/ENHANCEMENTS-20250919-115253.yaml new file mode 100644 index 0000000000..6f521d0c01 --- /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 472d0ede4e..95e310648d 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()