github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/command/v6/v3_delete_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/sharedaction" 6 "code.cloudfoundry.org/cli/actor/v3action" 7 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/flag" 10 "code.cloudfoundry.org/cli/command/v6/shared" 11 ) 12 13 //go:generate counterfeiter . V3DeleteActor 14 15 type V3DeleteActor interface { 16 CloudControllerAPIVersion() string 17 DeleteApplicationByNameAndSpace(name string, spaceGUID string) (v3action.Warnings, error) 18 } 19 20 type V3DeleteCommand struct { 21 RequiredArgs flag.AppName `positional-args:"yes"` 22 Force bool `short:"f" description:"Force deletion without confirmation"` 23 usage interface{} `usage:"CF_NAME v3-delete APP_NAME [-f]"` 24 25 UI command.UI 26 Config command.Config 27 SharedActor command.SharedActor 28 Actor V3DeleteActor 29 } 30 31 func (cmd *V3DeleteCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.UI = ui 33 cmd.Config = config 34 cmd.SharedActor = sharedaction.NewActor(config) 35 36 ccClient, _, err := shared.NewV3BasedClients(config, ui, true, "") 37 if err != nil { 38 return err 39 } 40 cmd.Actor = v3action.NewActor(ccClient, config, nil, nil) 41 42 return nil 43 } 44 45 func (cmd V3DeleteCommand) Execute(args []string) error { 46 cmd.UI.DisplayWarning(command.ExperimentalWarning) 47 48 err := command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionApplicationFlowV3) 49 if err != nil { 50 return err 51 } 52 53 err = cmd.SharedActor.CheckTarget(true, true) 54 if err != nil { 55 return err 56 } 57 58 currentUser, err := cmd.Config.CurrentUser() 59 if err != nil { 60 return err 61 } 62 63 if !cmd.Force { 64 response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the app {{.AppName}}?", map[string]interface{}{ 65 "AppName": cmd.RequiredArgs.AppName, 66 }) 67 68 if promptErr != nil { 69 return promptErr 70 } 71 72 if !response { 73 cmd.UI.DisplayText("Delete cancelled") 74 return nil 75 } 76 } 77 78 cmd.UI.DisplayTextWithFlavor("Deleting app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 79 "AppName": cmd.RequiredArgs.AppName, 80 "OrgName": cmd.Config.TargetedOrganization().Name, 81 "SpaceName": cmd.Config.TargetedSpace().Name, 82 "Username": currentUser.Name, 83 }) 84 85 warnings, err := cmd.Actor.DeleteApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID) 86 cmd.UI.DisplayWarnings(warnings) 87 if err != nil { 88 switch err.(type) { 89 case actionerror.ApplicationNotFoundError: 90 cmd.UI.DisplayTextWithFlavor("App {{.AppName}} does not exist", map[string]interface{}{ 91 "AppName": cmd.RequiredArgs.AppName, 92 }) 93 default: 94 return err 95 } 96 } 97 98 cmd.UI.DisplayOK() 99 100 return nil 101 }