| 25 | } |
| 26 | |
| 27 | func DeleteWithConfirmation(ask Asker, itemType string, itemName string, itemID string, doDelete func() error) error { |
| 28 | var enteredName string |
| 29 | if err := ask(&survey.Input{ |
| 30 | Message: fmt.Sprintf( |
| 31 | `You are about to delete the %s "%s" %s. This action cannot be reversed. To confirm, type the %s name:`, |
| 32 | itemType, itemName, output.Dimf("(%s)", itemID), itemType), |
| 33 | }, &enteredName); err != nil { |
| 34 | return err |
| 35 | } |
| 36 | |
| 37 | if enteredName != itemName { |
| 38 | return fmt.Errorf("input value %s does match expected value %s", enteredName, itemName) |
| 39 | } |
| 40 | |
| 41 | if err := doDelete(); err != nil { |
| 42 | return err |
| 43 | } |
| 44 | |
| 45 | fmt.Printf("%s The %s, \"%s\" %s was deleted successfully.\n", output.Red("✔"), itemType, itemName, output.Dimf("(%s)", itemID)) |
| 46 | return nil |
| 47 | } |
| 48 | |
| 49 | func AskName(ask Asker, messagePrefix string, resourceDescription string, value *string) error { |
| 50 | if *value == "" { |