Merge PR #4968: Improve error reporting in genutil CLI

This commit is contained in:
Timothy Chen
2019-08-30 09:59:41 -04:00
committed by Alexander Bezobchuk
parent 4581ab342b
commit c9abe72280
4 changed files with 31 additions and 25 deletions
+4 -3
View File
@@ -4,6 +4,7 @@ import (
"encoding/json"
"path/filepath"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/tendermint/tendermint/libs/cli"
@@ -31,12 +32,12 @@ func CollectGenTxsCmd(ctx *server.Context, cdc *codec.Codec,
name := viper.GetString(client.FlagName)
nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(config)
if err != nil {
return err
return errors.Wrap(err, "failed to initialize node validator files")
}
genDoc, err := tmtypes.GenesisDocFromFile(config.GenesisFile())
if err != nil {
return err
return errors.Wrap(err, "failed to read genesis doc from file")
}
genTxsDir := viper.GetString(flagGenTxDir)
@@ -49,7 +50,7 @@ func CollectGenTxsCmd(ctx *server.Context, cdc *codec.Codec,
appMessage, err := genutil.GenAppStateFromConfig(cdc, config, initCfg, *genDoc, genAccIterator)
if err != nil {
return err
return errors.Wrap(err, "failed to get genesis app state from config")
}
toPrint.AppMessage = appMessage
+18 -16
View File
@@ -9,6 +9,8 @@ import (
"os"
"path/filepath"
"github.com/pkg/errors"
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"
"github.com/spf13/viper"
@@ -63,7 +65,7 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
config.SetRoot(viper.GetString(client.FlagHome))
nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(ctx.Config)
if err != nil {
return err
return errors.Wrap(err, "failed to initialize node validator files")
}
// Read --nodeID, if empty take it from priv_validator.json
@@ -74,33 +76,33 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
if valPubKeyString := viper.GetString(flagPubKey); valPubKeyString != "" {
valPubKey, err = sdk.GetConsPubKeyBech32(valPubKeyString)
if err != nil {
return err
return errors.Wrap(err, "failed to get consensus node public key")
}
}
genDoc, err := tmtypes.GenesisDocFromFile(config.GenesisFile())
if err != nil {
return err
return errors.Wrapf(err, "failed to read genesis doc file %s", config.GenesisFile())
}
var genesisState map[string]json.RawMessage
if err = cdc.UnmarshalJSON(genDoc.AppState, &genesisState); err != nil {
return err
return errors.Wrap(err, "failed to unmarshal genesis state")
}
if err = mbm.ValidateGenesis(genesisState); err != nil {
return err
return errors.Wrap(err, "failed to validate genesis state")
}
kb, err := client.NewKeyBaseFromDir(viper.GetString(flagClientHome))
if err != nil {
return err
return errors.Wrap(err, "failed to initialize keybase")
}
name := viper.GetString(client.FlagName)
key, err := kb.Get(name)
if err != nil {
return err
return errors.Wrap(err, "failed to read from keybase")
}
// Set flags for creating gentx
@@ -111,12 +113,12 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
amount := viper.GetString(flagAmount)
coins, err := sdk.ParseCoins(amount)
if err != nil {
return err
return errors.Wrap(err, "failed to parse coins")
}
err = genutil.ValidateAccountInGenesis(genesisState, genAccIterator, key.GetAddress(), coins, cdc)
if err != nil {
return err
return errors.Wrap(err, "failed to validate account in genesis")
}
txBldr := auth.NewTxBuilderFromCLI().WithTxEncoder(utils.GetTxEncoder(cdc))
@@ -132,12 +134,12 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
// create a 'create-validator' message
txBldr, msg, err := smbh.BuildCreateValidatorMsg(cliCtx, txBldr)
if err != nil {
return err
return errors.Wrap(err, "failed to build create-validator message")
}
info, err := txBldr.Keybase().Get(name)
if err != nil {
return err
return errors.Wrap(err, "failed to read from tx builder keybase")
}
if info.GetType() == kbkeys.TypeOffline || info.GetType() == kbkeys.TypeMulti {
@@ -150,19 +152,19 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
cliCtx = cliCtx.WithOutput(w)
if err = utils.PrintUnsignedStdTx(txBldr, cliCtx, []sdk.Msg{msg}); err != nil {
return err
return errors.Wrap(err, "failed to print unsigned std tx")
}
// read the transaction
stdTx, err := readUnsignedGenTxFile(cdc, w)
if err != nil {
return err
return errors.Wrap(err, "failed to read unsigned gen tx file")
}
// sign the transaction and write it to the output file
signedTx, err := utils.SignStdTx(txBldr, cliCtx, name, stdTx, false, true)
if err != nil {
return err
return errors.Wrap(err, "failed to sign std tx")
}
// Fetch output file name
@@ -170,12 +172,12 @@ func GenTxCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager, sm
if outputDocument == "" {
outputDocument, err = makeOutputFilepath(config.RootDir, nodeID)
if err != nil {
return err
return errors.Wrap(err, "failed to create output file path")
}
}
if err := writeSignedGenTx(cdc, outputDocument, signedTx); err != nil {
return err
return errors.Wrap(err, "failed to write signed gen tx")
}
fmt.Fprintf(os.Stderr, "Genesis transaction written to %q\n", outputDocument)
+4 -3
View File
@@ -6,6 +6,7 @@ import (
"os"
"path/filepath"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/viper"
cfg "github.com/tendermint/tendermint/config"
@@ -87,7 +88,7 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager,
}
appState, err := codec.MarshalJSONIndent(cdc, mbm.DefaultGenesis())
if err != nil {
return err
return errors.Wrap(err, "Failed to marshall default genesis state")
}
genDoc := &types.GenesisDoc{}
@@ -98,7 +99,7 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager,
} else {
genDoc, err = types.GenesisDocFromFile(genFile)
if err != nil {
return err
return errors.Wrap(err, "Failed to read genesis doc from file")
}
}
@@ -106,7 +107,7 @@ func InitCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager,
genDoc.Validators = nil
genDoc.AppState = appState
if err = genutil.ExportGenesisFile(genDoc, genFile); err != nil {
return err
return errors.Wrap(err, "Failed to export gensis file")
}
toPrint := newPrintInfo(config.Moniker, chainID, nodeID, "", appState)
+5 -3
View File
@@ -4,6 +4,8 @@ import (
"fmt"
"time"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/tendermint/tendermint/types"
@@ -40,7 +42,7 @@ $ %s migrate v0.36 /path/to/genesis.json --chain-id=cosmoshub-3 --genesis-time=2
genDoc, err := types.GenesisDocFromFile(importGenesis)
if err != nil {
return err
return errors.Wrapf(err, "failed to read genesis document from file %s", importGenesis)
}
var initialState extypes.AppMap
@@ -59,7 +61,7 @@ $ %s migrate v0.36 /path/to/genesis.json --chain-id=cosmoshub-3 --genesis-time=2
err := t.UnmarshalText([]byte(genesisTime))
if err != nil {
return err
return errors.Wrap(err, "failed to unmarshal genesis time")
}
genDoc.GenesisTime = t
@@ -72,7 +74,7 @@ $ %s migrate v0.36 /path/to/genesis.json --chain-id=cosmoshub-3 --genesis-time=2
out, err := cdc.MarshalJSONIndent(genDoc, "", " ")
if err != nil {
return err
return errors.Wrap(err, "failed to marshal genesis doc")
}
fmt.Println(string(sdk.MustSortJSON(out)))