diff --git a/app.go b/app.go index 2f06bbd..0c830d9 100644 --- a/app.go +++ b/app.go @@ -906,7 +906,7 @@ func (a *Application) MustParseWithUsage(args []string) (command string) { fmt.Fprintf(a.errorWriter, "error: %v, use --help for full help including flags and arguments\n\n", err) ut = a.errorUsageTemplate - case errorIs(err, ErrRequiredArgument, ErrRequiredFlag, ErrUnknownLongFlag, ErrUnknownShortFlag, ErrExpectedFlagArgument, ErrFlagCannotRepeat, ErrUnexpectedArgument): + case errorIs(err, ErrRequiredArgument, ErrRequiredFlag, ErrUnknownLongFlag, ErrUnknownShortFlag, ErrExpectedFlagArgument, ErrFlagCannotRepeat, ErrUnexpectedArgument, ErrDuplicateCommand): fmt.Fprintf(a.errorWriter, "error: %v\n\n", err) default: diff --git a/cmd.go b/cmd.go index 5bb0d0b..1cf7cdd 100644 --- a/cmd.go +++ b/cmd.go @@ -196,7 +196,7 @@ func (c *cmdGroup) init() error { defaults = append(defaults, cmd.name) } if seen[cmd.name] { - return fmt.Errorf("duplicate command %q", cmd.name) + return fmt.Errorf("%w %q", ErrDuplicateCommand, cmd.name) } seen[cmd.name] = true for _, alias := range cmd.aliases { diff --git a/errors.go b/errors.go index 749d157..07cc853 100644 --- a/errors.go +++ b/errors.go @@ -35,4 +35,7 @@ var ( // ErrUnexpectedArgument indicates an unexpected argument was encountered ErrUnexpectedArgument = errors.New("unexpected argument") + + // ErrDuplicateCommand indicates that a command was defined multiple times + ErrDuplicateCommand = errors.New("duplicate command") )