1
0
mirror of https://github.com/beego/bee.git synced 2025-07-04 21:50:18 +00:00

ask whether overwrite the file

This commit is contained in:
astaxie
2014-08-09 11:14:00 +08:00
parent 5ffc17febb
commit 25fccbdf91
2 changed files with 93 additions and 12 deletions

33
util.go
View File

@ -16,6 +16,7 @@ package main
import (
"fmt"
"log"
"os"
"path/filepath"
"runtime"
@ -170,3 +171,35 @@ func GetGOPATHs() []string {
}
return paths
}
// askForConfirmation uses Scanln to parse user input. A user must type in "yes" or "no" and
// then press enter. It has fuzzy matching, so "y", "Y", "yes", "YES", and "Yes" all count as
// confirmations. If the input is not recognized, it will ask again. The function does not return
// until it gets a valid response from the user. Typically, you should use fmt to print out a question
// before calling askForConfirmation. E.g. fmt.Println("WARNING: Are you sure? (yes/no)")
func askForConfirmation() bool {
var response string
_, err := fmt.Scanln(&response)
if err != nil {
log.Fatal(err)
}
okayResponses := []string{"y", "Y", "yes", "Yes", "YES"}
nokayResponses := []string{"n", "N", "no", "No", "NO"}
if containsString(okayResponses, response) {
return true
} else if containsString(nokayResponses, response) {
return false
} else {
fmt.Println("Please type yes or no and then press enter:")
return askForConfirmation()
}
}
func containsString(slice []string, element string) bool {
for _, elem := range slice {
if elem == element {
return true
}
}
return false
}