diff --git a/cmd/src/cmd.go b/cmd/src/cmd.go index 95c16e6e0e..d0b20efb1c 100644 --- a/cmd/src/cmd.go +++ b/cmd/src/cmd.go @@ -5,7 +5,6 @@ import ( "fmt" "log" "os" - "slices" "github.com/sourcegraph/src-cli/internal/cmderrors" ) @@ -86,16 +85,6 @@ func (c commander) run(flagSet *flag.FlagSet, cmdName, usageText string, args [] log.Fatal("reading config: ", err) } - // Print help to stdout if requested - if slices.IndexFunc(args, func(s string) bool { - return s == "--help" - }) >= 0 { - cmd.flagSet.SetOutput(os.Stdout) - flag.CommandLine.SetOutput(os.Stdout) - cmd.flagSet.Usage() - os.Exit(0) - } - // Parse subcommand flags. args := flagSet.Args()[1:] if err := cmd.flagSet.Parse(args); err != nil { diff --git a/cmd/src/main.go b/cmd/src/main.go index 38c63afa45..fa2e234138 100644 --- a/cmd/src/main.go +++ b/cmd/src/main.go @@ -9,6 +9,7 @@ import ( "net/url" "os" "path/filepath" + "slices" "strings" "github.com/sourcegraph/sourcegraph/lib/errors" @@ -89,7 +90,21 @@ func main() { log.SetFlags(0) log.SetPrefix("") - commands.run(flag.CommandLine, "src", usageText, os.Args[1:]) + commands.run(flag.CommandLine, "src", usageText, normalizeDashHelp(os.Args[1:])) +} + +// normalizeDashHelp converts --help to -help since Go's flag parser only supports single dash. +func normalizeDashHelp(args []string) []string { + args = slices.Clone(args) + for i, arg := range args { + if arg == "--" { + break + } + if arg == "--help" { + args[i] = "-help" + } + } + return args } var cfg *config