github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/delete_space_command.go (about) 1 package v6 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v2action" 6 "code.cloudfoundry.org/cli/command" 7 "code.cloudfoundry.org/cli/command/flag" 8 "code.cloudfoundry.org/cli/command/v6/shared" 9 ) 10 11 //go:generate counterfeiter . DeleteSpaceActor 12 13 type DeleteSpaceActor interface { 14 DeleteSpaceByNameAndOrganizationName(spaceName string, orgName string) (v2action.Warnings, error) 15 } 16 17 type DeleteSpaceCommand struct { 18 RequiredArgs flag.Space `positional-args:"yes"` 19 Force bool `short:"f" description:"Force deletion without confirmation"` 20 Org string `short:"o" description:"Delete space within specified org"` 21 usage interface{} `usage:"CF_NAME delete-space SPACE [-o ORG] [-f]"` 22 23 Config command.Config 24 UI command.UI 25 SharedActor command.SharedActor 26 Actor DeleteSpaceActor 27 } 28 29 func (cmd *DeleteSpaceCommand) Setup(config command.Config, ui command.UI) error { 30 cmd.Config = config 31 cmd.UI = ui 32 cmd.SharedActor = sharedaction.NewActor(config) 33 34 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui) 35 if err != nil { 36 return err 37 } 38 cmd.Actor = v2action.NewActor(ccClient, uaaClient, config) 39 40 return nil 41 } 42 43 func (cmd DeleteSpaceCommand) Execute(args []string) error { 44 var ( 45 err error 46 orgName string 47 ) 48 49 if cmd.Org == "" { 50 err = cmd.SharedActor.CheckTarget(true, false) 51 orgName = cmd.Config.TargetedOrganization().Name 52 } else { 53 err = cmd.SharedActor.CheckTarget(false, false) 54 orgName = cmd.Org 55 } 56 57 if err != nil { 58 return err 59 } 60 61 user, err := cmd.Config.CurrentUser() 62 if err != nil { 63 return err 64 } 65 66 if !cmd.Force { 67 promptMessage := "Really delete the space {{.SpaceName}}?" 68 deleteSpace, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"SpaceName": cmd.RequiredArgs.Space}) 69 70 if promptErr != nil { 71 return promptErr 72 } 73 74 if !deleteSpace { 75 cmd.UI.DisplayText("Delete cancelled") 76 return nil 77 } 78 } 79 80 cmd.UI.DisplayTextWithFlavor("Deleting space {{.TargetSpace}} in org {{.TargetOrg}} as {{.CurrentUser}}...", 81 map[string]interface{}{ 82 "TargetSpace": cmd.RequiredArgs.Space, 83 "TargetOrg": orgName, 84 "CurrentUser": user.Name, 85 }) 86 87 warnings, err := cmd.Actor.DeleteSpaceByNameAndOrganizationName(cmd.RequiredArgs.Space, orgName) 88 cmd.UI.DisplayWarnings(warnings) 89 if err != nil { 90 return err 91 } 92 93 cmd.UI.DisplayOK() 94 95 if cmd.Config.TargetedOrganization().Name == orgName && 96 cmd.Config.TargetedSpace().Name == cmd.RequiredArgs.Space { 97 cmd.Config.UnsetSpaceInformation() 98 cmd.UI.DisplayText("TIP: No space targeted, use '{{.CfTargetCommand}}' to target a space.", 99 map[string]interface{}{"CfTargetCommand": cmd.Config.BinaryName() + " target -s"}) 100 } 101 102 return nil 103 }