Skip to content

Commit

Permalink
feat: init add recovery option
Browse files Browse the repository at this point in the history
  • Loading branch information
Shawn-Huang-Tron committed Sep 3, 2023
1 parent 58584f5 commit 6010105
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
26 changes: 26 additions & 0 deletions cmd/btfs/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"path/filepath"
"strconv"
"strings"
"time"

"github.com/bittorrent/go-btfs/assets"
"github.com/bittorrent/go-btfs/chain"
Expand All @@ -36,6 +37,7 @@ const (
rmOnUnpinOptionName = "rm-on-unpin"
seedOptionName = "seed"
simpleMode = "simple-mode"
recoveryOptionName = "recovery"
/*
passWordOptionName = "password"
passwordFileoptionName = "password-file"
Expand Down Expand Up @@ -72,6 +74,7 @@ environment variable:
cmds.BoolOption(rmOnUnpinOptionName, "r", "Remove unpinned files.").WithDefault(false),
cmds.StringOption(seedOptionName, "s", "Import seed phrase"),
cmds.BoolOption(simpleMode, "sm", "init with simple mode or not."),
cmds.StringOption(recoveryOptionName, "Recovery data from a backup"),
/*
cmds.StringOption(passWordOptionName, "", "password for decrypting keys."),
cmds.StringOption(passwordFileoptionName, "", "path to a file that contains password for decrypting keys"),
Expand Down Expand Up @@ -140,7 +143,30 @@ environment variable:
password, _ := req.Options[passWordOptionName].(string)
passwordFile, _ := req.Options[passwordFileoptionName].(string)
*/
backupPath, ok := req.Options[recoveryOptionName].(string)
if ok {
btfsPath := env.(*oldcmds.Context).ConfigRoot
dstPath := filepath.Dir(btfsPath)
if fsrepo.IsInitialized(btfsPath) {
newPath := filepath.Join(dstPath, fmt.Sprintf(".btfs_backup_%d", time.Now().Unix()))
// newPath := filepath.Join(filepath.Dir(btfsPath), backup)
err := os.Rename(btfsPath, newPath)
if err != nil {
return err
}
fmt.Println("btfs configuration file already exists!")
fmt.Println("We have renamed it to %s", newPath)
}

if err := commands.UnTar(backupPath, dstPath); err != nil {
err = commands.UnZip(backupPath, dstPath)
if err != nil {
return errors.New("your file format is not tar.gz or zip, please check again")
}
}
fmt.Println("Recovery successful!")
return nil
}
return doInit(os.Stdout, cctx.ConfigRoot, empty, nBitsForKeypair, profile, conf, keyType, importKey, seedPhrase, rmOnUnpin, simpleModeIn)
},
}
Expand Down
3 changes: 1 addition & 2 deletions core/commands/backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,7 @@ This command will create a backup of the data from the current BTFS node.
if err != nil {
return err
}
fmt.Printf(`Backup successful! The backup path is %s
`, absPath)
fmt.Printf("Backup successful! The backup path is %s\n", absPath)
return nil
},
}
Expand Down

0 comments on commit 6010105

Please sign in to comment.