github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/genutil/client/cli/collect.go (about) 1 package cli 2 3 import ( 4 "encoding/json" 5 "path/filepath" 6 7 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/cli" 8 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 9 "github.com/pkg/errors" 10 "github.com/spf13/cobra" 11 "github.com/spf13/viper" 12 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 15 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/server" 16 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/genutil" 17 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/genutil/types" 18 ) 19 20 const flagGenTxDir = "gentx-dir" 21 22 // CollectGenTxsCmd - return the cobra command to collect genesis transactions 23 func CollectGenTxsCmd(ctx *server.Context, cdc *codec.Codec, 24 genAccIterator types.GenesisAccountsIterator, defaultNodeHome string) *cobra.Command { 25 26 cmd := &cobra.Command{ 27 Use: "collect-gentxs", 28 Short: "Collect genesis txs and output a genesis.json file", 29 RunE: func(_ *cobra.Command, _ []string) error { 30 config := ctx.Config 31 config.SetRoot(viper.GetString(cli.HomeFlag)) 32 name := viper.GetString(flags.FlagName) 33 nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(config) 34 if err != nil { 35 return errors.Wrap(err, "failed to initialize node validator files") 36 } 37 38 genDoc, err := tmtypes.GenesisDocFromFile(config.GenesisFile()) 39 if err != nil { 40 return errors.Wrap(err, "failed to read genesis doc from file") 41 } 42 43 genTxsDir := viper.GetString(flagGenTxDir) 44 if genTxsDir == "" { 45 genTxsDir = filepath.Join(config.RootDir, "config", "gentx") 46 } 47 48 toPrint := newPrintInfo(config.Moniker, genDoc.ChainID, nodeID, genTxsDir, json.RawMessage("")) 49 initCfg := genutil.NewInitConfig(genDoc.ChainID, genTxsDir, name, nodeID, valPubKey) 50 51 appMessage, err := genutil.GenAppStateFromConfig(cdc, config, initCfg, *genDoc, genAccIterator) 52 if err != nil { 53 return errors.Wrap(err, "failed to get genesis app state from config") 54 } 55 56 toPrint.AppMessage = appMessage 57 58 // print out some key information 59 return displayInfo(cdc, toPrint) 60 }, 61 } 62 63 cmd.Flags().String(cli.HomeFlag, defaultNodeHome, "node's home directory") 64 cmd.Flags().String(flagGenTxDir, "", 65 "override default \"gentx\" directory from which collect and execute "+ 66 "genesis transactions; default [--home]/config/gentx/") 67 return cmd 68 } 69 70 // DONTCOVER