change RequiredFlagsErr to RequiredFlagErr, update to struct for custom message
This commit is contained in:
parent
fffdd82c00
commit
eb1734ba59
@ -310,15 +310,23 @@ func (e *errRequiredFlags) Error() string {
|
||||
|
||||
var allErrors []string
|
||||
numberOfMissingFlags := len(missingFlagNames)
|
||||
numberOfMissingReqErrFlags := len(missingFlagNamesReqErr)
|
||||
|
||||
if numberOfMissingFlags > 0 {
|
||||
if numberOfMissingFlags == 1 {
|
||||
allErrors = append(allErrors, fmt.Sprintf("Required flag %q not set", missingFlagNames[0]))
|
||||
} else {
|
||||
joinedMissingFlags := strings.Join(missingFlagNames, ", ")
|
||||
allErrors = append(allErrors, fmt.Sprintf("Required flags %q not set", joinedMissingFlags))
|
||||
}
|
||||
}
|
||||
|
||||
if numberOfMissingReqErrFlags > 0 {
|
||||
|
||||
// handle user defined errors and append
|
||||
|
||||
}
|
||||
|
||||
return strings.Join(allErrors, "\n")
|
||||
}
|
||||
|
||||
|
6
flag.go
6
flag.go
@ -85,10 +85,12 @@ type RequiredFlag interface {
|
||||
|
||||
// RequiredFlagsErr is an interface that allows users to redefine errors on required flags
|
||||
// it allows flags with user-defined errors to be backwards compatible with the Flag interface
|
||||
type RequiredFlagsErr interface {
|
||||
type RequiredFlagErr interface {
|
||||
Flag
|
||||
|
||||
FlagsErrRequired() bool
|
||||
IsCustom() bool
|
||||
GetMessage() string
|
||||
HasInterpolation() bool
|
||||
}
|
||||
|
||||
// DocGenerationFlag is an interface that allows documentation generation for the flag
|
||||
|
@ -9,6 +9,12 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type FlagErr struct {
|
||||
Custom bool
|
||||
Message string
|
||||
Interpolate bool
|
||||
}
|
||||
|
||||
// BoolFlag is a flag with type bool
|
||||
type BoolFlag struct {
|
||||
Name string
|
||||
@ -16,7 +22,7 @@ type BoolFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Destination *bool
|
||||
@ -38,9 +44,14 @@ func (f BoolFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f BoolFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f BoolFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f BoolFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -93,7 +104,7 @@ type BoolTFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Destination *bool
|
||||
@ -115,6 +126,16 @@ func (f BoolTFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f BoolTFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f BoolTFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f BoolTFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
@ -170,7 +191,7 @@ type DurationFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value time.Duration
|
||||
@ -193,6 +214,16 @@ func (f DurationFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f DurationFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f DurationFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f DurationFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
@ -248,7 +279,7 @@ type Float64Flag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value float64
|
||||
@ -271,9 +302,14 @@ func (f Float64Flag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f Float64Flag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f Float64Flag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f Float64Flag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -326,7 +362,7 @@ type GenericFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value Generic
|
||||
@ -348,9 +384,14 @@ func (f GenericFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f GenericFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f GenericFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f GenericFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -406,7 +447,7 @@ type Int64Flag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value int64
|
||||
@ -429,9 +470,14 @@ func (f Int64Flag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f Int64Flag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f Int64Flag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f Int64Flag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -484,7 +530,7 @@ type IntFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value int
|
||||
@ -507,9 +553,14 @@ func (f IntFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f IntFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f IntFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f IntFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -562,7 +613,7 @@ type IntSliceFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value *IntSlice
|
||||
@ -584,9 +635,14 @@ func (f IntSliceFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f IntSliceFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f IntSliceFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f IntSliceFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -642,7 +698,7 @@ type Int64SliceFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value *Int64Slice
|
||||
@ -664,9 +720,14 @@ func (f Int64SliceFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f Int64SliceFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f Int64SliceFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f Int64SliceFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -722,7 +783,7 @@ type StringFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value string
|
||||
@ -745,9 +806,14 @@ func (f StringFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f StringFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f StringFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f StringFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -800,7 +866,7 @@ type StringSliceFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value *StringSlice
|
||||
@ -822,9 +888,14 @@ func (f StringSliceFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f StringSliceFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f StringSliceFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f StringSliceFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -880,7 +951,7 @@ type Uint64Flag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value uint64
|
||||
@ -903,9 +974,14 @@ func (f Uint64Flag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f Uint64Flag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f Uint64Flag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f Uint64Flag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
@ -958,7 +1034,7 @@ type UintFlag struct {
|
||||
EnvVar string
|
||||
FilePath string
|
||||
Required bool
|
||||
RequiredFlagsErr bool
|
||||
RequiredFlagErr FlagErr
|
||||
Hidden bool
|
||||
TakesFile bool
|
||||
Value uint
|
||||
@ -981,9 +1057,14 @@ func (f UintFlag) IsRequired() bool {
|
||||
return f.Required
|
||||
}
|
||||
|
||||
// FlagsErrRequired returns whether or not the flag is required
|
||||
func (f UintFlag) FlagsErrRequired() bool {
|
||||
return f.RequiredFlagsErr
|
||||
// IsCustom returns whether or not the required flag has a custom errorj
|
||||
func (f UintFlag) IsCustom() bool {
|
||||
return f.RequiredFlagErr.Custom
|
||||
}
|
||||
|
||||
// GetMessage returns the custom error message
|
||||
func (f UintFlag) GetMessage() string {
|
||||
return f.RequiredFlagErr.Message
|
||||
}
|
||||
|
||||
// TakesValue returns true of the flag takes a value, otherwise false
|
||||
|
Loading…
Reference in New Issue
Block a user