mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
bdac2171f1
This should improve usability for VictoriaMetrics apps that have big number of command-line flags, i.e. all the apps.
39 lines
750 B
Go
39 lines
750 B
Go
package flagutil
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// Usage prints s and optional description for all the flags if -h or -help flag is passed to the app.
|
|
func Usage(s string) {
|
|
f := flag.CommandLine.Output()
|
|
fmt.Fprintf(f, "%s\n", s)
|
|
if hasHelpFlag(os.Args[1:]) {
|
|
flag.PrintDefaults()
|
|
} else {
|
|
fmt.Fprintf(f, `Run "%s -help" in order to see the description for all the available flags`+"\n", os.Args[0])
|
|
}
|
|
}
|
|
|
|
func hasHelpFlag(args []string) bool {
|
|
for _, arg := range args {
|
|
if isHelpArg(arg) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isHelpArg(arg string) bool {
|
|
if !strings.HasPrefix(arg, "-") {
|
|
return false
|
|
}
|
|
arg = arg[1:]
|
|
if strings.HasPrefix(arg, "-") {
|
|
arg = arg[1:]
|
|
}
|
|
return arg == "h" || arg == "help"
|
|
}
|