From fcc4f0001d968ced8db8fcce12327a89a97e7d1b Mon Sep 17 00:00:00 2001 From: Jeromy Date: Wed, 20 Jul 2016 03:14:29 -0700 Subject: [PATCH] move prompt code into daemon.go License: MIT Signed-off-by: Jeromy --- cmd/ipfs/daemon.go | 30 +++++++++++++++++++++++++++--- repo/fsrepo/migrations/mfsr.go | 27 --------------------------- test/sharness/t0066-migration.sh | 2 +- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index 190137150..24e42093c 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -228,10 +228,15 @@ func daemonFunc(req cmds.Request, res cmds.Response) { fmt.Println("Found old repo version, migrations need to be run.") if !found { - err = migrate.TryMigrating(fsrepo.RepoVersion) - } else if domigrate { - err = migrate.RunMigration(fsrepo.RepoVersion) + domigrate = YesNoPrompt("Run migrations automatically? [y/N]") } + + if !domigrate { + res.SetError(fmt.Errorf("please run the migrations manually"), cmds.ErrNormal) + return + } + + err = migrate.RunMigration(fsrepo.RepoVersion) if err != nil { res.SetError(err, cmds.ErrNormal) return @@ -594,3 +599,22 @@ func merge(cs ...<-chan error) <-chan error { }() return out } + +func YesNoPrompt(prompt string) bool { + var s string + for i := 0; i < 3; i++ { + fmt.Printf("%s ", prompt) + fmt.Scanf("%s", &s) + switch s { + case "y", "Y": + return true + case "n", "N": + return false + case "": + return false + } + fmt.Println("Please press either 'y' or 'n'") + } + + return false +} diff --git a/repo/fsrepo/migrations/mfsr.go b/repo/fsrepo/migrations/mfsr.go index 9f2679275..3e9329f17 100644 --- a/repo/fsrepo/migrations/mfsr.go +++ b/repo/fsrepo/migrations/mfsr.go @@ -59,30 +59,3 @@ type VersionFileNotFound string func (v VersionFileNotFound) Error() string { return "no version file in repo at " + string(v) } - -func TryMigrating(tovers int) error { - if !YesNoPrompt("Run migrations automatically? [y/N]") { - return fmt.Errorf("please run the migrations manually") - } - - return RunMigration(tovers) -} - -func YesNoPrompt(prompt string) bool { - var s string - for i := 0; i < 3; i++ { - fmt.Printf("%s ", prompt) - fmt.Scanf("%s", &s) - switch s { - case "y", "Y": - return true - case "n", "N": - return false - case "": - return false - } - fmt.Println("Please press either 'y' or 'n'") - } - - return false -} diff --git a/test/sharness/t0066-migration.sh b/test/sharness/t0066-migration.sh index 8ff002b78..78689f323 100755 --- a/test/sharness/t0066-migration.sh +++ b/test/sharness/t0066-migration.sh @@ -27,7 +27,7 @@ test_expect_success "ipfs daemon --migrate=false fails" ' ' test_expect_success "output looks good" ' - grep "ipfs repo needs migration" false_out + grep "please run the migrations manually" false_out ' test_expect_success "ipfs daemon --migrate=true runs migration" '