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  }