diff --git a/plugins/common/common.go b/plugins/common/common.go index 933631a89..a64260002 100644 --- a/plugins/common/common.go +++ b/plugins/common/common.go @@ -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 == "" { diff --git a/plugins/network/subcommands.go b/plugins/network/subcommands.go index 0e2653c49..12d07e20f 100644 --- a/plugins/network/subcommands.go +++ b/plugins/network/subcommands.go @@ -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))