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