backwards compatible RequiredFlag implementation

main
Lynn Cyrin 5 years ago
parent 922d231891
commit 6a2ae78373
No known key found for this signature in database
GPG Key ID: EE9CCB427DFEC897

@ -301,10 +301,12 @@ func checkRequiredFlags(flags []Flag, set *flag.FlagSet) error {
})
for _, f := range flags {
if f.IsRequired() {
key := strings.Split(f.GetName(), ",")[0]
if !visited[key] {
return fmt.Errorf("Required flag %s not set", f.GetName())
if rf, ok := f.(RequiredFlag); ok {
if rf.IsRequired() {
key := strings.Split(f.GetName(), ",")[0]
if !visited[key] {
return fmt.Errorf("Required flag %s not set", f.GetName())
}
}
}
}

@ -72,10 +72,17 @@ type Flag interface {
fmt.Stringer
// Apply Flag settings to the given flag set
Apply(*flag.FlagSet)
IsRequired() bool
GetName() string
}
// RequiredFlag is an interface that allows us to return mark flags as required
// it allows flags defined in this library to be marked as required in a backwards compatible fashion
type RequiredFlag interface {
Flag
IsRequired() bool
}
// errorableFlag is an interface that allows us to return errors during apply
// it allows flags defined in this library to return errors in a fashion backwards compatible
// TODO remove in v2 and modify the existing Flag interface to return errors

Loading…
Cancel
Save