|
- package flags
-
- import (
- "fmt"
- )
-
- // ErrorType represents the type of error.
- type ErrorType uint
-
- const (
- // ErrUnknown indicates a generic error.
- ErrUnknown ErrorType = iota
-
- // ErrExpectedArgument indicates that an argument was expected.
- ErrExpectedArgument
-
- // ErrUnknownFlag indicates an unknown flag.
- ErrUnknownFlag
-
- // ErrUnknownGroup indicates an unknown group.
- ErrUnknownGroup
-
- // ErrMarshal indicates a marshalling error while converting values.
- ErrMarshal
-
- // ErrHelp indicates that the built-in help was shown (the error
- // contains the help message).
- ErrHelp
-
- // ErrNoArgumentForBool indicates that an argument was given for a
- // boolean flag (which don't not take any arguments).
- ErrNoArgumentForBool
-
- // ErrRequired indicates that a required flag was not provided.
- ErrRequired
-
- // ErrShortNameTooLong indicates that a short flag name was specified,
- // longer than one character.
- ErrShortNameTooLong
-
- // ErrDuplicatedFlag indicates that a short or long flag has been
- // defined more than once
- ErrDuplicatedFlag
-
- // ErrTag indicates an error while parsing flag tags.
- ErrTag
-
- // ErrCommandRequired indicates that a command was required but not
- // specified
- ErrCommandRequired
-
- // ErrUnknownCommand indicates that an unknown command was specified.
- ErrUnknownCommand
-
- // ErrInvalidChoice indicates an invalid option value which only allows
- // a certain number of choices.
- ErrInvalidChoice
-
- // ErrInvalidTag indicates an invalid tag or invalid use of an existing tag
- ErrInvalidTag
- )
-
- func (e ErrorType) String() string {
- switch e {
- case ErrUnknown:
- return "unknown"
- case ErrExpectedArgument:
- return "expected argument"
- case ErrUnknownFlag:
- return "unknown flag"
- case ErrUnknownGroup:
- return "unknown group"
- case ErrMarshal:
- return "marshal"
- case ErrHelp:
- return "help"
- case ErrNoArgumentForBool:
- return "no argument for bool"
- case ErrRequired:
- return "required"
- case ErrShortNameTooLong:
- return "short name too long"
- case ErrDuplicatedFlag:
- return "duplicated flag"
- case ErrTag:
- return "tag"
- case ErrCommandRequired:
- return "command required"
- case ErrUnknownCommand:
- return "unknown command"
- case ErrInvalidChoice:
- return "invalid choice"
- case ErrInvalidTag:
- return "invalid tag"
- }
-
- return "unrecognized error type"
- }
-
- // Error represents a parser error. The error returned from Parse is of this
- // type. The error contains both a Type and Message.
- type Error struct {
- // The type of error
- Type ErrorType
-
- // The error message
- Message string
- }
-
- // Error returns the error's message
- func (e *Error) Error() string {
- return e.Message
- }
-
- func newError(tp ErrorType, message string) *Error {
- return &Error{
- Type: tp,
- Message: message,
- }
- }
-
- func newErrorf(tp ErrorType, format string, args ...interface{}) *Error {
- return newError(tp, fmt.Sprintf(format, args...))
- }
-
- func wrapError(err error) *Error {
- ret, ok := err.(*Error)
-
- if !ok {
- return newError(ErrUnknown, err.Error())
- }
-
- return ret
- }
|