github.com/prysmaticlabs/prysm@v1.4.4/cmd/slasher/usage.go (about) 1 // This code was adapted from https://github.com/ethereum/go-ethereum/blob/master/cmd/geth/usage.go 2 package main 3 4 import ( 5 "io" 6 "sort" 7 8 "github.com/prysmaticlabs/prysm/cmd/slasher/flags" 9 "github.com/prysmaticlabs/prysm/shared/cmd" 10 "github.com/prysmaticlabs/prysm/shared/debug" 11 "github.com/prysmaticlabs/prysm/shared/featureconfig" 12 "github.com/urfave/cli/v2" 13 ) 14 15 var appHelpTemplate = `NAME: 16 {{.App.Name}} - {{.App.Usage}} 17 USAGE: 18 {{.App.HelpName}} [options]{{if .App.Commands}} command [command options]{{end}} {{if .App.ArgsUsage}}{{.App.ArgsUsage}}{{else}}[arguments...]{{end}} 19 {{if .App.Version}} 20 AUTHOR: 21 {{range .App.Authors}}{{ . }}{{end}} 22 {{end}}{{if .App.Commands}} 23 GLOBAL OPTIONS: 24 {{range .App.Commands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}} 25 {{end}}{{end}}{{if .FlagGroups}} 26 {{range .FlagGroups}}{{.Name}} OPTIONS: 27 {{range .Flags}}{{.}} 28 {{end}} 29 {{end}}{{end}}{{if .App.Copyright }} 30 COPYRIGHT: 31 {{.App.Copyright}} 32 VERSION: 33 {{.App.Version}} 34 {{end}}{{if len .App.Authors}} 35 {{end}} 36 ` 37 38 type flagGroup struct { 39 Name string 40 Flags []cli.Flag 41 } 42 43 var appHelpFlagGroups = []flagGroup{ 44 { 45 Name: "cmd", 46 Flags: []cli.Flag{ 47 cmd.MinimalConfigFlag, 48 cmd.E2EConfigFlag, 49 cmd.RPCMaxPageSizeFlag, 50 cmd.VerbosityFlag, 51 cmd.DataDirFlag, 52 cmd.EnableTracingFlag, 53 cmd.TracingProcessNameFlag, 54 cmd.TracingEndpointFlag, 55 cmd.TraceSampleFractionFlag, 56 cmd.MonitoringHostFlag, 57 cmd.EnableBackupWebhookFlag, 58 cmd.BackupWebhookOutputDir, 59 flags.MonitoringPortFlag, 60 cmd.DisableMonitoringFlag, 61 cmd.LogFormat, 62 cmd.LogFileName, 63 cmd.ForceClearDB, 64 cmd.ClearDB, 65 cmd.ConfigFileFlag, 66 cmd.AcceptTosFlag, 67 }, 68 }, 69 { 70 Name: "debug", 71 Flags: []cli.Flag{ 72 debug.PProfFlag, 73 debug.PProfAddrFlag, 74 debug.PProfPortFlag, 75 debug.MemProfileRateFlag, 76 debug.CPUProfileFlag, 77 debug.TraceFlag, 78 }, 79 }, 80 { 81 Name: "slasher", 82 Flags: []cli.Flag{ 83 flags.BeaconCertFlag, 84 flags.CertFlag, 85 flags.KeyFlag, 86 flags.RPCPort, 87 flags.RPCHost, 88 flags.BeaconRPCProviderFlag, 89 flags.EnableHistoricalDetectionFlag, 90 flags.SpanCacheSize, 91 flags.HighestAttCacheSize, 92 }, 93 }, 94 { 95 Name: "features", 96 Flags: featureconfig.ActiveFlags(featureconfig.SlasherFlags), 97 }, 98 } 99 100 func init() { 101 cli.AppHelpTemplate = appHelpTemplate 102 103 type helpData struct { 104 App interface{} 105 FlagGroups []flagGroup 106 } 107 108 originalHelpPrinter := cli.HelpPrinter 109 cli.HelpPrinter = func(w io.Writer, tmpl string, data interface{}) { 110 if tmpl == appHelpTemplate { 111 for _, group := range appHelpFlagGroups { 112 sort.Sort(cli.FlagsByName(group.Flags)) 113 } 114 originalHelpPrinter(w, tmpl, helpData{data, appHelpFlagGroups}) 115 } else { 116 originalHelpPrinter(w, tmpl, data) 117 } 118 } 119 }