Fix: Unknown subcommands now error instead of silently showing help
Parent commands (mol, mail, crew, polecat, etc.) previously showed help and exited 0 for unknown subcommands like "gt mol foobar". This masked errors in scripts and confused users. Added requireSubcommand() helper to root.go and applied it to all parent commands. Now unknown subcommands properly error with exit code 1. Example before: gt mol unhook → shows help, exits 0 Example after: gt mol unhook → "Error: unknown command "unhook"", exits 1 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
committed by
Steve Yegge
parent
3d09c679e2
commit
df46e75a51
@@ -2,6 +2,7 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
@@ -85,3 +86,14 @@ func buildCommandPath(cmd *cobra.Command) string {
|
||||
}
|
||||
return strings.Join(parts, " ")
|
||||
}
|
||||
|
||||
// requireSubcommand returns a RunE function for parent commands that require
|
||||
// a subcommand. Without this, Cobra silently shows help and exits 0 for
|
||||
// unknown subcommands like "gt mol foobar", masking errors.
|
||||
func requireSubcommand(cmd *cobra.Command, args []string) error {
|
||||
if len(args) == 0 {
|
||||
return fmt.Errorf("requires a subcommand\n\nRun '%s --help' for usage", buildCommandPath(cmd))
|
||||
}
|
||||
return fmt.Errorf("unknown command %q for %q\n\nRun '%s --help' for available commands",
|
||||
args[0], buildCommandPath(cmd), buildCommandPath(cmd))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user