| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package pflag
- import "fmt"
- // notExistErrorMessageType specifies which flavor of "flag does not exist"
- // is printed by NotExistError. This allows the related errors to be grouped
- // under a single NotExistError struct without making a breaking change to
- // the error message text.
- type notExistErrorMessageType int
- const (
- flagNotExistMessage notExistErrorMessageType = iota
- flagNotDefinedMessage
- flagNoSuchFlagMessage
- flagUnknownFlagMessage
- flagUnknownShorthandFlagMessage
- )
- // NotExistError is the error returned when trying to access a flag that
- // does not exist in the FlagSet.
- type NotExistError struct {
- name string
- specifiedShorthands string
- messageType notExistErrorMessageType
- }
- // Error implements error.
- func (e *NotExistError) Error() string {
- switch e.messageType {
- case flagNotExistMessage:
- return fmt.Sprintf("flag %q does not exist", e.name)
- case flagNotDefinedMessage:
- return fmt.Sprintf("flag accessed but not defined: %s", e.name)
- case flagNoSuchFlagMessage:
- return fmt.Sprintf("no such flag -%v", e.name)
- case flagUnknownFlagMessage:
- return fmt.Sprintf("unknown flag: --%s", e.name)
- case flagUnknownShorthandFlagMessage:
- c := rune(e.name[0])
- return fmt.Sprintf("unknown shorthand flag: %q in -%s", c, e.specifiedShorthands)
- }
- panic(fmt.Errorf("unknown flagNotExistErrorMessageType: %v", e.messageType))
- }
- // GetSpecifiedName returns the name of the flag (without dashes) as it
- // appeared in the parsed arguments.
- func (e *NotExistError) GetSpecifiedName() string {
- return e.name
- }
- // GetSpecifiedShortnames returns the group of shorthand arguments
- // (without dashes) that the flag appeared within. If the flag was not in a
- // shorthand group, this will return an empty string.
- func (e *NotExistError) GetSpecifiedShortnames() string {
- return e.specifiedShorthands
- }
- // ValueRequiredError is the error returned when a flag needs an argument but
- // no argument was provided.
- type ValueRequiredError struct {
- flag *Flag
- specifiedName string
- specifiedShorthands string
- }
- // Error implements error.
- func (e *ValueRequiredError) Error() string {
- if len(e.specifiedShorthands) > 0 {
- c := rune(e.specifiedName[0])
- return fmt.Sprintf("flag needs an argument: %q in -%s", c, e.specifiedShorthands)
- }
- return fmt.Sprintf("flag needs an argument: --%s", e.specifiedName)
- }
- // GetFlag returns the flag for which the error occurred.
- func (e *ValueRequiredError) GetFlag() *Flag {
- return e.flag
- }
- // GetSpecifiedName returns the name of the flag (without dashes) as it
- // appeared in the parsed arguments.
- func (e *ValueRequiredError) GetSpecifiedName() string {
- return e.specifiedName
- }
- // GetSpecifiedShortnames returns the group of shorthand arguments
- // (without dashes) that the flag appeared within. If the flag was not in a
- // shorthand group, this will return an empty string.
- func (e *ValueRequiredError) GetSpecifiedShortnames() string {
- return e.specifiedShorthands
- }
- // InvalidValueError is the error returned when an invalid value is used
- // for a flag.
- type InvalidValueError struct {
- flag *Flag
- value string
- cause error
- }
- // Error implements error.
- func (e *InvalidValueError) Error() string {
- flag := e.flag
- var flagName string
- if flag.Shorthand != "" && flag.ShorthandDeprecated == "" {
- flagName = fmt.Sprintf("-%s, --%s", flag.Shorthand, flag.Name)
- } else {
- flagName = fmt.Sprintf("--%s", flag.Name)
- }
- return fmt.Sprintf("invalid argument %q for %q flag: %v", e.value, flagName, e.cause)
- }
- // Unwrap implements errors.Unwrap.
- func (e *InvalidValueError) Unwrap() error {
- return e.cause
- }
- // GetFlag returns the flag for which the error occurred.
- func (e *InvalidValueError) GetFlag() *Flag {
- return e.flag
- }
- // GetValue returns the invalid value that was provided.
- func (e *InvalidValueError) GetValue() string {
- return e.value
- }
- // InvalidSyntaxError is the error returned when a bad flag name is passed on
- // the command line.
- type InvalidSyntaxError struct {
- specifiedFlag string
- }
- // Error implements error.
- func (e *InvalidSyntaxError) Error() string {
- return fmt.Sprintf("bad flag syntax: %s", e.specifiedFlag)
- }
- // GetSpecifiedName returns the exact flag (with dashes) as it
- // appeared in the parsed arguments.
- func (e *InvalidSyntaxError) GetSpecifiedFlag() string {
- return e.specifiedFlag
- }
|