diff --git a/context.go b/context.go index c9f645b..37221bd 100644 --- a/context.go +++ b/context.go @@ -106,6 +106,11 @@ func (c *Context) GlobalGeneric(name string) interface{} { return lookupGeneric(name, c.globalSet) } +// Returns the number of flags set +func (c *Context) NumFlags() int { + return c.flagSet.NFlag() +} + // Determines if the flag was actually set func (c *Context) IsSet(name string) bool { if c.setFlags == nil { diff --git a/context_test.go b/context_test.go index 7c9a443..d4a1877 100644 --- a/context_test.go +++ b/context_test.go @@ -97,3 +97,15 @@ func TestContext_GlobalIsSet(t *testing.T) { expect(t, c.GlobalIsSet("myflagGlobalUnset"), false) expect(t, c.GlobalIsSet("bogusGlobal"), false) } + +func TestContext_NumFlags(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + set.String("otherflag", "hello world", "doc") + globalSet := flag.NewFlagSet("test", 0) + globalSet.Bool("myflagGlobal", true, "doc") + c := cli.NewContext(nil, set, globalSet) + set.Parse([]string{"--myflag", "--otherflag=foo"}) + globalSet.Parse([]string{"--myflagGlobal"}) + expect(t, c.NumFlags(), 2) +}