diff --git a/category.go b/category.go index 3a8abb1e80..14e3649ca7 100644 --- a/category.go +++ b/category.go @@ -105,7 +105,11 @@ func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { for _, fl := range fs { if cf, ok := fl.(CategorizableFlag); ok { - if cat := cf.GetCategory(); cat != "" { + visible := false + if vf, ok := fl.(VisibleFlag); ok { + visible = vf.IsVisible() + } + if cat := cf.GetCategory(); cat != "" && visible { fc.AddFlag(cat, fl) categorized = true } @@ -115,7 +119,11 @@ func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { if categorized { for _, fl := range fs { if cf, ok := fl.(CategorizableFlag); ok { - if cf.GetCategory() == "" { + visible := false + if vf, ok := fl.(VisibleFlag); ok { + visible = vf.IsVisible() + } + if cf.GetCategory() == "" && visible { fc.AddFlag("", fl) } } diff --git a/command_test.go b/command_test.go index 9a69e2f02b..7d8c019c16 100644 --- a/command_test.go +++ b/command_test.go @@ -518,11 +518,20 @@ func TestCommand_VisibleFlagCategories(t *testing.T) { &StringFlag{ Name: "strd", // no category set }, + &StringFlag{ + Name: "strd1", // no category set and also hidden + Hidden: true, + }, &IntFlag{ Name: "intd", Aliases: []string{"altd1", "altd2"}, Category: "cat1", }, + &StringFlag{ + Name: "sfd", + Category: "cat2", // category set and hidden + Hidden: true, + }, }, MutuallyExclusiveFlags: []MutuallyExclusiveFlags{{ Category: "cat2",