github.com/sleungcy/cli@v7.1.0+incompatible/command/v7/delete_private_domain_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  )
     9  
    10  type DeletePrivateDomainCommand struct {
    11  	BaseCommand
    12  
    13  	RequiredArgs    flag.Domain `positional-args:"yes"`
    14  	Force           bool        `short:"f" description:"Force deletion without confirmation"`
    15  	usage           interface{} `usage:"CF_NAME delete-private-domain DOMAIN [-f]"`
    16  	relatedCommands interface{} `related_commands:"delete-shared-domain, domains, unshare-private-domain"`
    17  }
    18  
    19  func (cmd DeletePrivateDomainCommand) Execute(args []string) error {
    20  	domainName := cmd.RequiredArgs.Domain
    21  	err := cmd.SharedActor.CheckTarget(true, false)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	currentUser, err := cmd.Config.CurrentUser()
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	cmd.UI.DisplayTextWithFlavor("Deleting private domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{
    32  		"DomainName": domainName,
    33  		"Username":   currentUser.Name,
    34  	})
    35  
    36  	domain, warnings, err := cmd.Actor.GetDomainByName(domainName)
    37  	cmd.UI.DisplayWarnings(warnings)
    38  
    39  	if err != nil {
    40  		if _, ok := err.(actionerror.DomainNotFoundError); ok {
    41  			cmd.UI.DisplayWarning("Domain '{{.DomainName}}' does not exist.", map[string]interface{}{
    42  				"DomainName": cmd.RequiredArgs.Domain,
    43  			})
    44  			cmd.UI.DisplayOK()
    45  			return nil
    46  		}
    47  		return err
    48  	}
    49  
    50  	if domain.Shared() {
    51  		return fmt.Errorf("Domain '%s' is a shared domain, not a private domain.", domainName)
    52  	}
    53  
    54  	cmd.UI.DisplayText("Deleting the private domain will remove associated routes which will make apps with this domain unreachable.")
    55  
    56  	if !cmd.Force {
    57  		response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the private domain {{.DomainName}}?", map[string]interface{}{
    58  			"DomainName": domainName,
    59  		})
    60  
    61  		if promptErr != nil {
    62  			return promptErr
    63  		}
    64  
    65  		if !response {
    66  			cmd.UI.DisplayText("'{{.DomainName}}' has not been deleted.", map[string]interface{}{
    67  				"DomainName": domainName,
    68  			})
    69  			return nil
    70  		}
    71  	}
    72  	cmd.UI.DisplayTextWithFlavor("Deleting private domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{
    73  		"DomainName": domainName,
    74  		"Username":   currentUser.Name,
    75  	})
    76  
    77  	warnings, err = cmd.Actor.DeleteDomain(domain)
    78  	cmd.UI.DisplayWarnings(warnings)
    79  
    80  	if err != nil {
    81  		return err
    82  	}
    83  
    84  	cmd.UI.DisplayOK()
    85  
    86  	cmd.UI.DisplayText("TIP: Run 'cf domains' to view available domains.")
    87  
    88  	return nil
    89  }