refactor: move confirmation logic to common.go

This commit is contained in:
Jose Diaz-Gonzalez
2020-03-10 14:13:11 -04:00
parent bd47c76d26
commit 0b758d2ba0
2 changed files with 22 additions and 13 deletions

View File

@@ -75,6 +75,27 @@ func AppRoot(appName string) string {
return fmt.Sprintf("%v/%v", dokkuRoot, appName)
}
// Checks for confirmation on destructive actions
func AskForDestructiveConfirmation(name string, objectType string) error {
LogWarn("WARNING: Potentially Destructive Action")
LogWarn(fmt.Sprintf("This command will destroy %v %v.", objectType, name))
LogWarn(fmt.Sprintf("To proceed, type \"%v\"", name))
fmt.Print("> ")
var response string
_, err := fmt.Scanln(&response)
if err != nil {
return err
}
if response != name {
LogStderr("Confirmation did not match test. Aborted.")
os.Exit(1)
return nil
}
return nil
}
// GetDeployingAppImageName returns deploying image identifier for a given app, tag tuple. validate if tag is presented
func GetDeployingAppImageName(appName, imageTag, imageRepo string) (imageName string) {
if appName == "" {

View File

@@ -41,21 +41,9 @@ func CommandDestroy(networkName string, forceDestroy bool) error {
}
if !forceDestroy {
common.LogWarn("WARNING: Potentially Destructive Action")
common.LogWarn(fmt.Sprintf("This command will destroy network %v.", networkName))
common.LogWarn(fmt.Sprintf("To proceed, type \"%v\"", networkName))
fmt.Print("> ")
var response string
_, err := fmt.Scanln(&response)
if err != nil {
if err := common.AskForDestructiveConfirmation(networkName, "network"); err != nil {
return err
}
if response != networkName {
common.LogStderr("Confirmation did not match test. Aborted.")
os.Exit(1)
return nil
}
}
common.LogInfo1Quiet(fmt.Sprintf("Destroying network %v", networkName))