From e27277fa75de690af59cb2e2c593cc425e568c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E5=B9=BF=E5=AE=87?= Date: Sat, 2 Jul 2022 18:12:38 +0800 Subject: [PATCH] fix: stop automatic sorting for --help --- category.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/category.go b/category.go index 8bf325e203..a5271a39ef 100644 --- a/category.go +++ b/category.go @@ -100,6 +100,9 @@ func newFlagCategories() FlagCategories { func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { fc := newFlagCategories() + if !enableCategory(fs) { + return fc + } for _, fl := range fs { if cf, ok := fl.(CategorizableFlag); ok { fc.AddFlag(cf.GetCategory(), cf) @@ -109,6 +112,19 @@ func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { return fc } +func enableCategory(fs []Flag) bool { + for _, fl := range fs { + if cf, ok := fl.(CategorizableFlag); ok { + // When a category is specified, it is assumed that the entire command opens the category + if len(cf.GetCategory()) != 0 { + return true + } + } + } + + return false +} + func (f *defaultFlagCategories) AddFlag(category string, fl Flag) { if _, ok := f.m[category]; !ok { f.m[category] = &defaultVisibleFlagCategory{name: category, m: map[string]Flag{}}