Skip to content

Commit 95b5854

Browse files
authored
Consistently redirect usage examples to stdout (#1105)
* direct help texts to stdout * set usage output for subcommands
1 parent 919e777 commit 95b5854

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

cmd/src/cmd.go

+14
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"log"
77
"os"
8+
"slices"
89
"strings"
910

1011
"github.com/sourcegraph/sourcegraph/lib/errors"
@@ -56,6 +57,7 @@ func (c commander) run(flagSet *flag.FlagSet, cmdName, usageText string, args []
5657

5758
// Print usage if the command is "help".
5859
if flagSet.Arg(0) == "help" || flagSet.NArg() == 0 {
60+
flagSet.SetOutput(os.Stdout)
5961
flagSet.Usage()
6062
os.Exit(0)
6163
}
@@ -93,10 +95,22 @@ func (c commander) run(flagSet *flag.FlagSet, cmdName, usageText string, args []
9395
panic(fmt.Sprintf("all registered commands should use flag.ExitOnError: error: %s", err))
9496
}
9597

98+
// Show usage examples for subcommand
99+
if len(args) == 0 || slices.IndexFunc(args, func(s string) bool {
100+
return s == "help" || s == "--help"
101+
}) >= 0 {
102+
cmd.flagSet.SetOutput(os.Stdout)
103+
flag.CommandLine.SetOutput(os.Stdout)
104+
cmd.flagSet.Usage()
105+
os.Exit(0)
106+
}
107+
96108
// Execute the subcommand.
97109
if err := cmd.handler(flagSet.Args()[1:]); err != nil {
98110
if _, ok := err.(*cmderrors.UsageError); ok {
99111
log.Printf("error: %s\n\n", err)
112+
cmd.flagSet.SetOutput(os.Stderr)
113+
flag.CommandLine.SetOutput(os.Stderr)
100114
cmd.flagSet.Usage()
101115
os.Exit(2)
102116
}

0 commit comments

Comments
 (0)