INNER CODE UNIT · Go
setUsageErrorHandlers
openrundev/openrun · cmd/openrun/main.go:265
func setUsageErrorHandlers(commands []*cli.Command, helpPath string) {
for _, command := range commands {
commandPath := helpPath + " " + command.Name
if command.OnUsageError == nil {
command.OnUsageError = func(_ *cli.Context, err error, _ bool) error {
return usageError(command.Flags, commandPath, err)
}
}
setUsageErrorHandlers(command.Subcommands, commandPath)
}
}
// usageError adds a did-you-mean suggestion for unknown flags and a --help
// hint to flag parsing errors
func usageError(flags []cli.Flag, helpPath string, err error) error {
if flagName, ok := strings.CutPrefix(err.Error(), "flag provided but not defined: -"); ok && cli.SuggestFlag != nil {
if suggestion := cli.SuggestFlag(flags, flagName, false); suggestion != "" {
return fmt.Errorf("%w (did you mean %q?)\nrun '%s --help' for usage", err, suggestion, helpPath)