github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/cmd/burrow/commands/restore.go (about) 1 package commands 2 3 import ( 4 "github.com/hyperledger/burrow/core" 5 cli "github.com/jawher/mow.cli" 6 ) 7 8 // Restore reads a state file and saves into a runnable dir 9 func Restore(output Output) func(cmd *cli.Cmd) { 10 return func(cmd *cli.Cmd) { 11 configOpts := addConfigOptions(cmd) 12 silentOpt := cmd.BoolOpt("s silent", false, "If state already exists don't throw error") 13 filename := cmd.StringArg("FILE", "", "Restore from this dump") 14 cmd.Spec += "[--silent] [FILE]" 15 16 cmd.Action = func() { 17 conf, err := configOpts.obtainBurrowConfig() 18 if err != nil { 19 output.Fatalf("could not set up config: %v", err) 20 } 21 22 if err := conf.Verify(); err != nil { 23 output.Fatalf("cannot continue with config: %v", err) 24 } 25 26 output.Logf("Using validator address: %s", *conf.ValidatorAddress) 27 28 kern, err := core.NewKernel(conf.BurrowDir) 29 if err != nil { 30 output.Fatalf("could not create Burrow kernel: %w", err) 31 } 32 33 if err = kern.LoadLoggerFromConfig(conf.Logging); err != nil { 34 output.Fatalf("could not load logger: %w", err) 35 } 36 37 if err = kern.LoadDump(conf.GenesisDoc, *filename, *silentOpt); err != nil { 38 output.Fatalf("could not load dump: %v", err) 39 } 40 41 kern.ShutdownAndExit() 42 } 43 } 44 }