github.com/loafoe/cli@v7.1.0+incompatible/command/v7/delete_org_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 DeleteOrgCommand struct { 9 BaseCommand 10 11 RequiredArgs flag.Organization `positional-args:"yes"` 12 Force bool `short:"f" description:"Force deletion without confirmation"` 13 usage interface{} `usage:"CF_NAME delete-org ORG [-f]"` 14 relatedCommands interface{} `related_commands:"create-org, orgs, quotas, set-org-role"` 15 } 16 17 func (cmd *DeleteOrgCommand) Execute(args []string) error { 18 err := cmd.SharedActor.CheckTarget(false, false) 19 if err != nil { 20 return err 21 } 22 23 user, err := cmd.Config.CurrentUser() 24 if err != nil { 25 return err 26 } 27 28 if !cmd.Force { 29 promptMessage := "Really delete the org {{.OrgName}}, including its spaces, apps, service instances, routes, private domains and space-scoped service brokers?" 30 deleteOrg, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"OrgName": cmd.RequiredArgs.Organization}) 31 32 if promptErr != nil { 33 return promptErr 34 } 35 36 if !deleteOrg { 37 cmd.UI.DisplayText("Organization '{{.OrgName}}' has not been deleted.", map[string]interface{}{ 38 "OrgName": cmd.RequiredArgs.Organization, 39 }) 40 return nil 41 } 42 } 43 44 cmd.UI.DisplayTextWithFlavor("Deleting org {{.OrgName}} as {{.Username}}...", map[string]interface{}{ 45 "OrgName": cmd.RequiredArgs.Organization, 46 "Username": user.Name, 47 }) 48 49 warnings, err := cmd.Actor.DeleteOrganization(cmd.RequiredArgs.Organization) 50 cmd.UI.DisplayWarnings(warnings) 51 if err != nil { 52 switch err.(type) { 53 case actionerror.OrganizationNotFoundError: 54 cmd.UI.DisplayWarning("Org '{{.OrgName}}' does not exist.", map[string]interface{}{ 55 "OrgName": cmd.RequiredArgs.Organization, 56 }) 57 default: 58 return err 59 } 60 } 61 62 cmd.UI.DisplayOK() 63 64 if cmd.Config.TargetedOrganization().Name == cmd.RequiredArgs.Organization { 65 cmd.UI.DisplayText("TIP: No org or space targeted, use '{{.CfTargetCommand}}' to target an org and space.", 66 map[string]interface{}{"CfTargetCommand": cmd.Config.BinaryName() + " target -o ORG -s SPACE"}) 67 cmd.Config.UnsetOrganizationAndSpaceInformation() 68 } 69 70 return nil 71 }