From 043079dafe9cd538af37f4c33b48637181a21331 Mon Sep 17 00:00:00 2001 From: james-prysm <90280386+james-prysm@users.noreply.github.com> Date: Tue, 13 Dec 2022 06:13:33 -0600 Subject: [PATCH] Adding exit codes to cli commands (#11735) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adding exit codes to cmd * adding in fatal logs to other cli actions Co-authored-by: Radosław Kapka --- cmd/beacon-chain/jwt/jwt.go | 7 ++++++- cmd/beacon-chain/main.go | 7 ++++++- cmd/prysmctl/checkpointsync/download.go | 7 ++++++- cmd/prysmctl/db/query.go | 11 ++++++++--- cmd/prysmctl/p2p/request_blocks.go | 11 ++++++++--- cmd/prysmctl/testnet/generate_genesis.go | 11 ++++++++--- cmd/prysmctl/weaksubjectivity/BUILD.bazel | 1 + cmd/prysmctl/weaksubjectivity/checkpoint.go | 8 +++++++- cmd/validator/main.go | 7 ++++++- 9 files changed, 56 insertions(+), 14 deletions(-) diff --git a/cmd/beacon-chain/jwt/jwt.go b/cmd/beacon-chain/jwt/jwt.go index 08abfeea72..7226b75778 100644 --- a/cmd/beacon-chain/jwt/jwt.go +++ b/cmd/beacon-chain/jwt/jwt.go @@ -23,7 +23,12 @@ var Commands = &cli.Command{ Flags: cmd.WrapFlags([]cli.Flag{ cmd.JwtOutputFileFlag, }), - Action: generateAuthSecretInFile, + Action: func(cliCtx *cli.Context) error { + if err := generateAuthSecretInFile(cliCtx); err != nil { + logrus.WithError(err).Fatal("Could not generate jwt") + } + return nil + }, } func generateAuthSecretInFile(c *cli.Context) error { diff --git a/cmd/beacon-chain/main.go b/cmd/beacon-chain/main.go index c05447c26f..bbdb411011 100644 --- a/cmd/beacon-chain/main.go +++ b/cmd/beacon-chain/main.go @@ -140,7 +140,12 @@ func main() { app := cli.App{} app.Name = "beacon-chain" app.Usage = "this is a beacon chain implementation for Ethereum" - app.Action = startNode + app.Action = func(ctx *cli.Context) error { + if err := startNode(ctx); err != nil { + return cli.Exit(err.Error(), 1) + } + return nil + } app.Version = version.Version() app.Commands = []*cli.Command{ dbcommands.Commands, diff --git a/cmd/prysmctl/checkpointsync/download.go b/cmd/prysmctl/checkpointsync/download.go index ad82685d54..c508b6643a 100644 --- a/cmd/prysmctl/checkpointsync/download.go +++ b/cmd/prysmctl/checkpointsync/download.go @@ -19,7 +19,12 @@ var downloadCmd = &cli.Command{ Name: "download", Aliases: []string{"dl"}, Usage: "Download the latest finalized state and the most recent block it integrates. To be used for checkpoint sync.", - Action: cliActionDownload, + Action: func(cliCtx *cli.Context) error { + if err := cliActionDownload(cliCtx); err != nil { + log.WithError(err).Fatal("Could not download checkpoint-sync data") + } + return nil + }, Flags: []cli.Flag{ &cli.StringFlag{ Name: "beacon-node-host", diff --git a/cmd/prysmctl/db/query.go b/cmd/prysmctl/db/query.go index 70fca60838..48d19a5f09 100644 --- a/cmd/prysmctl/db/query.go +++ b/cmd/prysmctl/db/query.go @@ -21,9 +21,14 @@ var queryFlags = struct { }{} var queryCmd = &cli.Command{ - Name: "query", - Usage: "database query tool", - Action: queryAction, + Name: "query", + Usage: "database query tool", + Action: func(cliCtx *cli.Context) error { + if err := queryAction(cliCtx); err != nil { + log.WithError(err).Fatal("Could not query db") + } + return nil + }, Flags: []cli.Flag{ &cli.StringFlag{ Name: "bucket", diff --git a/cmd/prysmctl/p2p/request_blocks.go b/cmd/prysmctl/p2p/request_blocks.go index c6136801ca..af05e5a77d 100644 --- a/cmd/prysmctl/p2p/request_blocks.go +++ b/cmd/prysmctl/p2p/request_blocks.go @@ -32,9 +32,14 @@ var requestBlocksFlags = struct { }{} var requestBlocksCmd = &cli.Command{ - Name: "beacon-blocks-by-range", - Usage: "Request a range of blocks from a beacon node via a p2p connection", - Action: cliActionRequestBlocks, + Name: "beacon-blocks-by-range", + Usage: "Request a range of blocks from a beacon node via a p2p connection", + Action: func(cliCtx *cli.Context) error { + if err := cliActionRequestBlocks(cliCtx); err != nil { + log.WithError(err).Fatal("Could not request blocks by range") + } + return nil + }, Flags: []cli.Flag{ cmd.ChainConfigFileFlag, &cli.StringFlag{ diff --git a/cmd/prysmctl/testnet/generate_genesis.go b/cmd/prysmctl/testnet/generate_genesis.go index e03beb8b51..ff9f8bb50d 100644 --- a/cmd/prysmctl/testnet/generate_genesis.go +++ b/cmd/prysmctl/testnet/generate_genesis.go @@ -59,9 +59,14 @@ var ( Value: "", } generateGenesisStateCmd = &cli.Command{ - Name: "generate-genesis", - Usage: "Generate a beacon chain genesis state", - Action: cliActionGenerateGenesisState, + Name: "generate-genesis", + Usage: "Generate a beacon chain genesis state", + Action: func(cliCtx *cli.Context) error { + if err := cliActionGenerateGenesisState(cliCtx); err != nil { + log.WithError(err).Fatal("Could not generate beacon chain genesis state") + } + return nil + }, Flags: []cli.Flag{ &cli.StringFlag{ Name: "chain-config-file", diff --git a/cmd/prysmctl/weaksubjectivity/BUILD.bazel b/cmd/prysmctl/weaksubjectivity/BUILD.bazel index 8ba007a0b0..93cac118e2 100644 --- a/cmd/prysmctl/weaksubjectivity/BUILD.bazel +++ b/cmd/prysmctl/weaksubjectivity/BUILD.bazel @@ -10,6 +10,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//api/client/beacon:go_default_library", + "@com_github_sirupsen_logrus//:go_default_library", "@com_github_urfave_cli_v2//:go_default_library", ], ) diff --git a/cmd/prysmctl/weaksubjectivity/checkpoint.go b/cmd/prysmctl/weaksubjectivity/checkpoint.go index ecde48577e..0920dd2627 100644 --- a/cmd/prysmctl/weaksubjectivity/checkpoint.go +++ b/cmd/prysmctl/weaksubjectivity/checkpoint.go @@ -6,6 +6,7 @@ import ( "time" "github.com/prysmaticlabs/prysm/v3/api/client/beacon" + log "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) @@ -18,7 +19,12 @@ var checkpointCmd = &cli.Command{ Name: "checkpoint", Aliases: []string{"cpt"}, Usage: "Compute the latest weak subjectivity checkpoint (block_root:epoch) using trusted server data.", - Action: cliActionCheckpoint, + Action: func(cliCtx *cli.Context) error { + if err := cliActionCheckpoint(cliCtx); err != nil { + log.WithError(err).Fatal("Could not perform checkpoint-sync") + } + return nil + }, Flags: []cli.Flag{ &cli.StringFlag{ Name: "beacon-node-host", diff --git a/cmd/validator/main.go b/cmd/validator/main.go index 16e5ac37eb..76a4f30be8 100644 --- a/cmd/validator/main.go +++ b/cmd/validator/main.go @@ -121,7 +121,12 @@ func main() { app.Name = "validator" app.Usage = `launches an Ethereum validator client that interacts with a beacon chain, starts proposer and attester services, p2p connections, and more` app.Version = version.Version() - app.Action = startNode + app.Action = func(ctx *cli.Context) error { + if err := startNode(ctx); err != nil { + return cli.Exit(err.Error(), 1) + } + return nil + } app.Commands = []*cli.Command{ walletcommands.Commands, accountcommands.Commands,