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  }