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