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)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…