github.com/prysmaticlabs/prysm@v1.4.4/cmd/validator/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/validator/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.VerbosityFlag, 50 cmd.DataDirFlag, 51 cmd.ClearDB, 52 cmd.ForceClearDB, 53 cmd.EnableBackupWebhookFlag, 54 cmd.BackupWebhookOutputDir, 55 cmd.EnableTracingFlag, 56 cmd.TracingProcessNameFlag, 57 cmd.TracingEndpointFlag, 58 cmd.TraceSampleFractionFlag, 59 cmd.MonitoringHostFlag, 60 flags.MonitoringPortFlag, 61 cmd.DisableMonitoringFlag, 62 cmd.LogFormat, 63 cmd.LogFileName, 64 cmd.ConfigFileFlag, 65 cmd.ChainConfigFileFlag, 66 cmd.GrpcMaxCallRecvMsgSizeFlag, 67 cmd.AcceptTosFlag, 68 cmd.BoltMMapInitialSizeFlag, 69 }, 70 }, 71 { 72 Name: "debug", 73 Flags: []cli.Flag{ 74 debug.PProfFlag, 75 debug.PProfAddrFlag, 76 debug.PProfPortFlag, 77 debug.MemProfileRateFlag, 78 debug.CPUProfileFlag, 79 debug.TraceFlag, 80 debug.BlockProfileRateFlag, 81 debug.MutexProfileFractionFlag, 82 }, 83 }, 84 { 85 Name: "validator", 86 Flags: []cli.Flag{ 87 flags.BeaconRPCProviderFlag, 88 flags.BeaconRPCGatewayProviderFlag, 89 flags.CertFlag, 90 flags.EnableWebFlag, 91 flags.DisablePenaltyRewardLogFlag, 92 flags.GraffitiFlag, 93 flags.EnableRPCFlag, 94 flags.RPCHost, 95 flags.RPCPort, 96 flags.GRPCGatewayPort, 97 flags.GRPCGatewayHost, 98 flags.GrpcRetriesFlag, 99 flags.GrpcRetryDelayFlag, 100 flags.GPRCGatewayCorsDomain, 101 flags.GrpcHeadersFlag, 102 flags.SlasherRPCProviderFlag, 103 flags.SlasherCertFlag, 104 flags.DisableAccountMetricsFlag, 105 flags.WalletDirFlag, 106 flags.WalletPasswordFileFlag, 107 flags.GraffitiFileFlag, 108 flags.EnableDutyCountDown, 109 }, 110 }, 111 { 112 Name: "features", 113 Flags: featureconfig.ActiveFlags(featureconfig.ValidatorFlags), 114 }, 115 { 116 Name: "interop", 117 Flags: []cli.Flag{ 118 flags.InteropNumValidators, 119 flags.InteropStartIndex, 120 }, 121 }, 122 } 123 124 func init() { 125 cli.AppHelpTemplate = appHelpTemplate 126 127 type helpData struct { 128 App interface{} 129 FlagGroups []flagGroup 130 } 131 132 originalHelpPrinter := cli.HelpPrinter 133 cli.HelpPrinter = func(w io.Writer, tmpl string, data interface{}) { 134 if tmpl == appHelpTemplate { 135 for _, group := range appHelpFlagGroups { 136 sort.Sort(cli.FlagsByName(group.Flags)) 137 } 138 originalHelpPrinter(w, tmpl, helpData{data, appHelpFlagGroups}) 139 } else { 140 originalHelpPrinter(w, tmpl, data) 141 } 142 } 143 }