github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/genutil/client/cli/validate_genesis.go (about) 1 package cli 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 8 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 9 "github.com/spf13/cobra" 10 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/server" 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/module" 14 ) 15 16 // Validate genesis command takes 17 func ValidateGenesisCmd(ctx *server.Context, cdc *codec.Codec, mbm module.BasicManager) *cobra.Command { 18 return &cobra.Command{ 19 Use: "validate-genesis [file]", 20 Args: cobra.RangeArgs(0, 1), 21 Short: "validates the genesis file at the default location or at the location passed as an arg", 22 RunE: func(cmd *cobra.Command, args []string) (err error) { 23 24 // Load default if passed no args, otherwise load passed file 25 var genesis string 26 if len(args) == 0 { 27 genesis = ctx.Config.GenesisFile() 28 } else { 29 genesis = args[0] 30 } 31 32 fmt.Fprintf(os.Stderr, "validating genesis file at %s\n", genesis) 33 34 var genDoc *tmtypes.GenesisDoc 35 if genDoc, err = tmtypes.GenesisDocFromFile(genesis); err != nil { 36 return fmt.Errorf("error loading genesis doc from %s: %s", genesis, err.Error()) 37 } 38 39 var genState map[string]json.RawMessage 40 if err = cdc.UnmarshalJSON(genDoc.AppState, &genState); err != nil { 41 return fmt.Errorf("error unmarshalling genesis doc %s: %s", genesis, err.Error()) 42 } 43 44 if err = mbm.ValidateGenesis(genState); err != nil { 45 return fmt.Errorf("error validating genesis file %s: %s", genesis, err.Error()) 46 } 47 48 // TODO test to make sure initchain doesn't panic 49 50 fmt.Printf("File at %s is a valid genesis file\n", genesis) 51 return nil 52 }, 53 } 54 }