From f951abbd2319d1820b23e2203d2322be07a0c9e4 Mon Sep 17 00:00:00 2001 From: Harish Navnit Date: Thu, 29 Aug 2024 04:56:48 +0800 Subject: [PATCH 1/2] direct help texts to stdout --- cmd/src/cmd.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/src/cmd.go b/cmd/src/cmd.go index 96a6fcec9e..467dcd9210 100644 --- a/cmd/src/cmd.go +++ b/cmd/src/cmd.go @@ -56,6 +56,7 @@ func (c commander) run(flagSet *flag.FlagSet, cmdName, usageText string, args [] // Print usage if the command is "help". if flagSet.Arg(0) == "help" || flagSet.NArg() == 0 { + flagSet.SetOutput(os.Stdout) flagSet.Usage() os.Exit(0) } From 0ebadd9f69b08ee8c729242100db5336af667556 Mon Sep 17 00:00:00 2001 From: Harish Navnit Date: Thu, 29 Aug 2024 11:52:21 +0800 Subject: [PATCH 2/2] set usage output for subcommands --- cmd/src/cmd.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cmd/src/cmd.go b/cmd/src/cmd.go index 467dcd9210..3ffe235d7d 100644 --- a/cmd/src/cmd.go +++ b/cmd/src/cmd.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "os" + "slices" "strings" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -94,10 +95,22 @@ func (c commander) run(flagSet *flag.FlagSet, cmdName, usageText string, args [] panic(fmt.Sprintf("all registered commands should use flag.ExitOnError: error: %s", err)) } + // Show usage examples for subcommand + if len(args) == 0 || slices.IndexFunc(args, func(s string) bool { + return s == "help" || s == "--help" + }) >= 0 { + cmd.flagSet.SetOutput(os.Stdout) + flag.CommandLine.SetOutput(os.Stdout) + cmd.flagSet.Usage() + os.Exit(0) + } + // Execute the subcommand. if err := cmd.handler(flagSet.Args()[1:]); err != nil { if _, ok := err.(*cmderrors.UsageError); ok { log.Printf("error: %s\n\n", err) + cmd.flagSet.SetOutput(os.Stderr) + flag.CommandLine.SetOutput(os.Stderr) cmd.flagSet.Usage() os.Exit(2) }