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  }