Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 96 lines (71 sloc) 2.085 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
package flags

import (
"fmt"
"reflect"
)

// 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
)

func (e ErrorType) String() string {
return reflect.TypeOf(e).Name()
}

// 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
}
Something went wrong with that request. Please try again.