@@ -20,6 +20,7 @@ import (
2020 "encoding/json"
2121 "errors"
2222 "fmt"
23+ "io"
2324 "os"
2425 "path/filepath"
2526 "regexp"
@@ -504,19 +505,21 @@ func importHistory(ctx *cli.Context) error {
504505 network = networks [0 ]
505506 }
506507
507- format := ctx .String (utils .EraFormatFlag .Name )
508+ var (
509+ format = ctx .String (utils .EraFormatFlag .Name )
510+ from func (era.ReadAtSeekCloser ) (era.Era , error )
511+ )
508512 switch format {
509513 case "era1" , "era" :
510- if err := utils .ImportHistory (chain , dir , network , onedb .From , onedb .NewIterator ); err != nil {
511- return err
512- }
514+ from = onedb .From
513515 case "erae" :
514- if err := utils .ImportHistory (chain , dir , network , execdb .From , execdb .NewIterator ); err != nil {
515- return err
516- }
516+ from = execdb .From
517517 default :
518518 return fmt .Errorf ("unknown --era.format %q (expected 'era1' or 'erae')" , format )
519519 }
520+ if err := utils .ImportHistory (chain , dir , network , from ); err != nil {
521+ return err
522+ }
520523
521524 fmt .Printf ("Import done in %v\n " , time .Since (start ))
522525 return nil
@@ -549,19 +552,24 @@ func exportHistory(ctx *cli.Context) error {
549552 utils .Fatalf ("Export error: block number %d larger than head block %d\n " , uint64 (last ), head .Number .Uint64 ())
550553 }
551554
552- format := ctx .String (utils .EraFormatFlag .Get (ctx ))
555+ var (
556+ format = ctx .String (utils .EraFormatFlag .Get (ctx ))
557+ filename func (network string , epoch int , root common.Hash ) string
558+ newBuilder func (w io.Writer ) era.Builder
559+ )
553560 switch format {
554561 case "era1" , "era" :
555- if err := utils .ExportHistory (chain , dir , uint64 (first ), uint64 (last ), uint64 (era .MaxSize ), onedb .NewBuilder , onedb .Filename ); err != nil {
556- utils .Fatalf ("Export error: %v\n " , err )
557- }
562+ newBuilder = func (w io.Writer ) era.Builder { return onedb .NewBuilder (w ) }
563+ filename = func (network string , epoch int , root common.Hash ) string { return onedb .Filename (network , epoch , root ) }
558564 case "erae" :
559- if err := utils .ExportHistory (chain , dir , uint64 (first ), uint64 (last ), uint64 (era .MaxSize ), execdb .NewBuilder , execdb .Filename ); err != nil {
560- utils .Fatalf ("Export error: %v\n " , err )
561- }
565+ newBuilder = func (w io.Writer ) era.Builder { return execdb .NewBuilder (w ) }
566+ filename = func (network string , epoch int , root common.Hash ) string { return execdb .Filename (network , epoch , root ) }
562567 default :
563568 return fmt .Errorf ("unknown archive format %q (use 'era1' or 'erae')" , format )
564569 }
570+ if err := utils .ExportHistory (chain , dir , uint64 (first ), uint64 (last ), uint64 (era .MaxSize ), newBuilder , filename ); err != nil {
571+ utils .Fatalf ("Export error: %v\n " , err )
572+ }
565573
566574 fmt .Printf ("Export done in %v\n " , time .Since (start ))
567575 return nil
0 commit comments