commands/cmdutils/errors.go (55 lines of code) (raw):

package cmdutils import ( "errors" "fmt" "github.com/AlecAivazis/survey/v2/terminal" "github.com/spf13/cobra" ) // FlagError is the kind of error raised in flag processing type FlagError struct { Err error } func (fe FlagError) Error() string { return fe.Err.Error() } func (fe FlagError) Unwrap() error { return fe.Err } // SilentError is an error that triggers exit Code 1 without any error messaging var SilentError = errors.New("SilentError") type ExitError struct { Err error Code int Details string } func WrapErrorWithCode(err error, code int, details string) *ExitError { return &ExitError{ Err: err, Code: code, Details: details, } } func WrapError(err error, log string) *ExitError { return WrapErrorWithCode(err, 1, log) } func CancelError(log ...any) error { if len(log) < 1 { return WrapErrorWithCode(terminal.InterruptErr, 2, "action cancelled") } return WrapErrorWithCode(terminal.InterruptErr, 2, fmt.Sprint(log...)) } func (e *ExitError) Error() string { return e.Err.Error() } func (e ExitError) Unwrap() error { return e.Err } func MinimumArgs(n int, msg string) cobra.PositionalArgs { if msg == "" { return cobra.MinimumNArgs(1) } return func(cmd *cobra.Command, args []string) error { if len(args) < n { return &FlagError{Err: errors.New(msg)} } return nil } }