feat: prompt for confirmation on storage:destroy

`storage:destroy` now prompts for confirmation before removing a named storage entry, matching the behavior of other destructive commands such as `apps:destroy` and `network:destroy`. The prompt can be skipped with the `--force` flag or the global `dokku --force` flag for non-interactive callers.
This commit is contained in:
Jose Diaz-Gonzalez
2026-05-29 14:31:20 -04:00
parent d003bfaf0e
commit 3493869fa4
6 changed files with 108 additions and 12 deletions

View File

@@ -95,8 +95,10 @@ func CommandCreate(input CommandCreateInput) error {
}
// CommandDestroy removes a registered storage entry. Refuses to remove
// an entry that any app still has attached.
func CommandDestroy(name string) error {
// an entry that any app still has attached. Prompts for confirmation
// unless force is set (or the global --force flag exported
// DOKKU_APPS_FORCE_DELETE).
func CommandDestroy(name string, force bool) error {
if name == "" {
return errors.New("storage entry name is required")
}
@@ -112,6 +114,15 @@ func CommandDestroy(name string) error {
return fmt.Errorf("storage entry %q is still mounted by app(s): %s", name, strings.Join(using, ", "))
}
if os.Getenv("DOKKU_APPS_FORCE_DELETE") == "1" {
force = true
}
if !force {
if err := common.AskForDestructiveConfirmation(name, "storage entry"); err != nil {
return err
}
}
entry, err := LoadEntry(name)
if err != nil {
return err