github.com/loafoe/cli@v7.1.0+incompatible/command/v7/delete_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/command/flag" 6 ) 7 8 type DeleteCommand struct { 9 BaseCommand 10 11 RequiredArgs flag.AppName `positional-args:"yes"` 12 Force bool `short:"f" description:"Force deletion without confirmation"` 13 DeleteMappedRoutes bool `short:"r" description:"Also delete any mapped routes"` 14 usage interface{} `usage:"CF_NAME delete APP_NAME [-r] [-f]"` 15 relatedCommands interface{} `related_commands:"apps, scale, stop"` 16 } 17 18 func (cmd DeleteCommand) Execute(args []string) error { 19 err := cmd.SharedActor.CheckTarget(true, true) 20 if err != nil { 21 return err 22 } 23 24 currentUser, err := cmd.Config.CurrentUser() 25 if err != nil { 26 return err 27 } 28 29 if !cmd.Force { 30 prompt := "Really delete the app {{.AppName}}?" 31 if cmd.DeleteMappedRoutes { 32 prompt = "Really delete the app {{.AppName}} and associated routes?" 33 cmd.UI.DisplayText("Deleting the app and associated routes will make apps with this route, in any org, unreachable.") 34 } 35 36 response, promptErr := cmd.UI.DisplayBoolPrompt(false, prompt, map[string]interface{}{ 37 "AppName": cmd.RequiredArgs.AppName, 38 }) 39 40 if promptErr != nil { 41 return promptErr 42 } 43 44 if !response { 45 cmd.UI.DisplayText("App '{{.AppName}}' has not been deleted.", map[string]interface{}{ 46 "AppName": cmd.RequiredArgs.AppName, 47 }) 48 return nil 49 } 50 } 51 52 cmd.UI.DisplayTextWithFlavor("Deleting app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 53 "AppName": cmd.RequiredArgs.AppName, 54 "OrgName": cmd.Config.TargetedOrganization().Name, 55 "SpaceName": cmd.Config.TargetedSpace().Name, 56 "Username": currentUser.Name, 57 }) 58 59 warnings, err := cmd.Actor.DeleteApplicationByNameAndSpace( 60 cmd.RequiredArgs.AppName, 61 cmd.Config.TargetedSpace().GUID, 62 cmd.DeleteMappedRoutes, 63 ) 64 cmd.UI.DisplayWarnings(warnings) 65 if err != nil { 66 switch err.(type) { 67 case actionerror.ApplicationNotFoundError: 68 cmd.UI.DisplayWarning("App '{{.AppName}}' does not exist.", map[string]interface{}{ 69 "AppName": cmd.RequiredArgs.AppName, 70 }) 71 case actionerror.RouteBoundToMultipleAppsError: 72 cmd.UI.DeferText( 73 "\nTIP: Run 'cf delete {{.AppName}}' to delete the app and 'cf delete-route' to delete the route.", 74 map[string]interface{}{ 75 "AppName": cmd.RequiredArgs.AppName, 76 }, 77 ) 78 return err 79 default: 80 return err 81 } 82 } 83 84 cmd.UI.DisplayOK() 85 86 return nil 87 }