github.com/loafoe/cli@v7.1.0+incompatible/command/v7/delete_space_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 DeleteSpaceCommand struct { 9 BaseCommand 10 11 RequiredArgs flag.Space `positional-args:"yes"` 12 Force bool `short:"f" description:"Force deletion without confirmation"` 13 Org string `short:"o" description:"Delete space within specified org"` 14 usage interface{} `usage:"CF_NAME delete-space SPACE [-o ORG] [-f]"` 15 } 16 17 func (cmd DeleteSpaceCommand) Execute(args []string) error { 18 var ( 19 err error 20 orgName string 21 ) 22 23 if cmd.Org == "" { 24 err = cmd.SharedActor.CheckTarget(true, false) 25 orgName = cmd.Config.TargetedOrganization().Name 26 } else { 27 err = cmd.SharedActor.CheckTarget(false, false) 28 orgName = cmd.Org 29 } 30 31 if err != nil { 32 return err 33 } 34 35 user, err := cmd.Config.CurrentUser() 36 if err != nil { 37 return err 38 } 39 40 if !cmd.Force { 41 cmd.UI.DisplayText("This action impacts all resources scoped to this space, including apps, service instances, and space-scoped service brokers.") 42 promptMessage := "Really delete the space {{.SpaceName}}?" 43 deleteSpace, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"SpaceName": cmd.RequiredArgs.Space}) 44 45 if promptErr != nil { 46 return promptErr 47 } 48 49 if !deleteSpace { 50 cmd.UI.DisplayText("'{{.TargetSpace}}' has not been deleted.", 51 map[string]interface{}{ 52 "TargetSpace": cmd.RequiredArgs.Space, 53 }) 54 return nil 55 } 56 } 57 58 cmd.UI.DisplayTextWithFlavor("Deleting space {{.TargetSpace}} in org {{.TargetOrg}} as {{.CurrentUser}}...", 59 map[string]interface{}{ 60 "TargetSpace": cmd.RequiredArgs.Space, 61 "TargetOrg": orgName, 62 "CurrentUser": user.Name, 63 }) 64 65 warnings, err := cmd.Actor.DeleteSpaceByNameAndOrganizationName(cmd.RequiredArgs.Space, orgName) 66 cmd.UI.DisplayWarnings(warnings) 67 if err != nil { 68 switch err.(type) { 69 case actionerror.SpaceNotFoundError: 70 cmd.UI.DisplayWarning("Space '{{.SpaceName}}' does not exist.", map[string]interface{}{ 71 "SpaceName": cmd.RequiredArgs.Space, 72 }) 73 default: 74 return err 75 } 76 } 77 78 cmd.UI.DisplayOK() 79 80 if cmd.Config.TargetedOrganization().Name == orgName && 81 cmd.Config.TargetedSpace().Name == cmd.RequiredArgs.Space { 82 cmd.Config.UnsetSpaceInformation() 83 cmd.UI.DisplayText("TIP: No space targeted, use '{{.CfTargetCommand}}' to target a space.", 84 map[string]interface{}{"CfTargetCommand": cmd.Config.BinaryName() + " target -s"}) 85 } 86 87 return nil 88 }