Merge commit 'd1ac284' into v3-porting
This commit is contained in:
commit
1643a783ea
24
context.go
24
context.go
@ -82,7 +82,27 @@ func (cCtx *Context) IsSet(name string) bool {
|
||||
func (cCtx *Context) LocalFlagNames() []string {
|
||||
var names []string
|
||||
cCtx.flagSet.Visit(makeFlagNameVisitor(&names))
|
||||
return names
|
||||
// Check the flags which have been set via env or file
|
||||
if cCtx.Command != nil && cCtx.Command.Flags != nil {
|
||||
for _, f := range cCtx.Command.Flags {
|
||||
if f.IsSet() {
|
||||
names = append(names, f.Names()...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sort out the duplicates since flag could be set via multiple
|
||||
// paths
|
||||
m := map[string]struct{}{}
|
||||
var unames []string
|
||||
for _, name := range names {
|
||||
if _, ok := m[name]; !ok {
|
||||
m[name] = struct{}{}
|
||||
unames = append(unames, name)
|
||||
}
|
||||
}
|
||||
|
||||
return unames
|
||||
}
|
||||
|
||||
// FlagNames returns a slice of flag names used by the this context and all of
|
||||
@ -90,7 +110,7 @@ func (cCtx *Context) LocalFlagNames() []string {
|
||||
func (cCtx *Context) FlagNames() []string {
|
||||
var names []string
|
||||
for _, pCtx := range cCtx.Lineage() {
|
||||
pCtx.flagSet.Visit(makeFlagNameVisitor(&names))
|
||||
names = append(names, pCtx.LocalFlagNames()...)
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
@ -239,6 +239,10 @@ func TestFlagsFromEnv(t *testing.T) {
|
||||
t.Errorf("Flag %s not set", f.Names()[0])
|
||||
}
|
||||
|
||||
// check that flag names are returned when set via env as well
|
||||
if !reflect.DeepEqual(ctx.FlagNames(), test.flag.Names()) {
|
||||
t.Errorf("Not enough flag names %+v", ctx.FlagNames())
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
@ -153,8 +153,8 @@ func ExampleMultiStringFlag() {
|
||||
//---
|
||||
//Setting all flags via environment...
|
||||
//
|
||||
//Flag names: []
|
||||
//Local flag names: []
|
||||
//Flag names: ["flag-one" "1" "two" "2" "flag-three" "3" "flag-four" "4"]
|
||||
//Local flag names: ["flag-one" "1" "two" "2" "flag-three" "3" "flag-four" "4"]
|
||||
//Context values:
|
||||
//"flag-one"=["v 9" "v 10"]
|
||||
//"two"=["v 11" "v 12"]
|
||||
|
Loading…
Reference in New Issue
Block a user