github.com/fnando/bolt@v0.0.4-0.20231107225351-5241e4d187b8/internal/commands/flag.go (about) 1 package commands 2 3 import ( 4 "flag" 5 "fmt" 6 "reflect" 7 "strings" 8 9 "golang.org/x/exp/slices" 10 ) 11 12 func getFlagsUsage(flags *flag.FlagSet) (out string) { 13 flags.VisitAll(func(flag *flag.Flag) { 14 if flag.Usage == "" { 15 return 16 } 17 18 defaultValue := "" 19 ignoreDefaultValue := slices.Contains([]string{"version", "help"}, flag.Name) 20 21 if flag.DefValue != "" && !ignoreDefaultValue { 22 defaultValue = fmt.Sprintf(" (default to %v)", flag.DefValue) 23 } 24 25 var flagStr string = "--" + flag.Name 26 27 if reflect.TypeOf(flag.Value).String() != "*flag.boolValue" { 28 parts := strings.Split(strings.ToUpper(flag.Name), "-") 29 flagStr += "=" + parts[len(parts)-1] 30 } 31 32 out += fmt.Sprintf(" %-35s%s%s\n", flagStr, flag.Usage, defaultValue) 33 }) 34 35 return out 36 }