Add countable interface
This commit is contained in:
parent
15fd35e7b4
commit
dbdf119742
@ -105,13 +105,11 @@ func (cCtx *Context) Lineage() []*Context {
|
|||||||
return lineage
|
return lineage
|
||||||
}
|
}
|
||||||
|
|
||||||
// NumOccurrences returns the num of occurences of this flag
|
// Count returns the num of occurences of this flag
|
||||||
func (cCtx *Context) Count(name string) int {
|
func (cCtx *Context) Count(name string) int {
|
||||||
if fs := cCtx.lookupFlagSet(name); fs != nil {
|
if fs := cCtx.lookupFlagSet(name); fs != nil {
|
||||||
if bf, ok := fs.Lookup(name).Value.(*boolValue); ok {
|
if cf, ok := fs.Lookup(name).Value.(Countable); ok {
|
||||||
if bf.count != nil {
|
return cf.Count()
|
||||||
return *bf.count
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
6
flag.go
6
flag.go
@ -139,6 +139,12 @@ type CategorizableFlag interface {
|
|||||||
GetCategory() string
|
GetCategory() string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Countable is an interface to enable detection of flag values which support
|
||||||
|
// repetitive flags
|
||||||
|
type Countable interface {
|
||||||
|
Count() int
|
||||||
|
}
|
||||||
|
|
||||||
func flagSet(name string, flags []Flag) (*flag.FlagSet, error) {
|
func flagSet(name string, flags []Flag) (*flag.FlagSet, error) {
|
||||||
set := flag.NewFlagSet(name, flag.ContinueOnError)
|
set := flag.NewFlagSet(name, flag.ContinueOnError)
|
||||||
|
|
||||||
|
@ -51,6 +51,13 @@ func (b *boolValue) String() string {
|
|||||||
|
|
||||||
func (b *boolValue) IsBoolFlag() bool { return true }
|
func (b *boolValue) IsBoolFlag() bool { return true }
|
||||||
|
|
||||||
|
func (b *boolValue) Count() int {
|
||||||
|
if b.count != nil {
|
||||||
|
return *b.count
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// TakesValue returns true of the flag takes a value, otherwise false
|
// TakesValue returns true of the flag takes a value, otherwise false
|
||||||
func (f *BoolFlag) TakesValue() bool {
|
func (f *BoolFlag) TakesValue() bool {
|
||||||
return false
|
return false
|
||||||
|
@ -634,7 +634,7 @@ func (cCtx *Context) Bool(name string) bool
|
|||||||
Bool looks up the value of a local BoolFlag, returns false if not found
|
Bool looks up the value of a local BoolFlag, returns false if not found
|
||||||
|
|
||||||
func (cCtx *Context) Count(name string) int
|
func (cCtx *Context) Count(name string) int
|
||||||
NumOccurrences returns the num of occurences of this flag
|
Count returns the num of occurences of this flag
|
||||||
|
|
||||||
func (cCtx *Context) Duration(name string) time.Duration
|
func (cCtx *Context) Duration(name string) time.Duration
|
||||||
Duration looks up the value of a local DurationFlag, returns 0 if not found
|
Duration looks up the value of a local DurationFlag, returns 0 if not found
|
||||||
@ -708,6 +708,12 @@ func (cCtx *Context) Uint64(name string) uint64
|
|||||||
func (cCtx *Context) Value(name string) interface{}
|
func (cCtx *Context) Value(name string) interface{}
|
||||||
Value returns the value of the flag corresponding to `name`
|
Value returns the value of the flag corresponding to `name`
|
||||||
|
|
||||||
|
type Countable interface {
|
||||||
|
Count() int
|
||||||
|
}
|
||||||
|
Countable is an interface to enable detection of flag values which support
|
||||||
|
repetitive flags
|
||||||
|
|
||||||
type DocGenerationFlag interface {
|
type DocGenerationFlag interface {
|
||||||
Flag
|
Flag
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user