github.com/arunkumar7540/cli@v6.45.0+incompatible/command/v7/delete_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/sharedaction"
     6  	"code.cloudfoundry.org/cli/actor/v7action"
     7  	"code.cloudfoundry.org/cli/command"
     8  	"code.cloudfoundry.org/cli/command/flag"
     9  	"code.cloudfoundry.org/cli/command/v7/shared"
    10  )
    11  
    12  //go:generate counterfeiter . DeleteActor
    13  
    14  type DeleteActor interface {
    15  	CloudControllerAPIVersion() string
    16  	DeleteApplicationByNameAndSpace(name string, spaceGUID string) (v7action.Warnings, error)
    17  }
    18  
    19  type DeleteCommand struct {
    20  	RequiredArgs       flag.AppName `positional-args:"yes"`
    21  	Force              bool         `short:"f" description:"Force deletion without confirmation"`
    22  	DeleteMappedRoutes bool         `short:"r" description:"Also delete any mapped routes [Not currently functional]"`
    23  	usage              interface{}  `usage:"CF_NAME delete APP_NAME [-r] [-f]"`
    24  	relatedCommands    interface{}  `related_commands:"apps, scale, stop"`
    25  
    26  	UI          command.UI
    27  	Config      command.Config
    28  	SharedActor command.SharedActor
    29  	Actor       DeleteActor
    30  }
    31  
    32  func (cmd *DeleteCommand) Setup(config command.Config, ui command.UI) error {
    33  	cmd.UI = ui
    34  	cmd.Config = config
    35  	cmd.SharedActor = sharedaction.NewActor(config)
    36  
    37  	ccClient, _, err := shared.NewClients(config, ui, true, "")
    38  	if err != nil {
    39  		return err
    40  	}
    41  	cmd.Actor = v7action.NewActor(ccClient, config, nil, nil)
    42  
    43  	return nil
    44  }
    45  
    46  func (cmd DeleteCommand) Execute(args []string) error {
    47  	if cmd.DeleteMappedRoutes {
    48  		cmd.UI.DisplayWarning("-r flag not implemented - the mapped routes will not be deleted. Use `delete-orphaned-routes` instead.")
    49  	}
    50  
    51  	err := cmd.SharedActor.CheckTarget(true, true)
    52  	if err != nil {
    53  		return err
    54  	}
    55  
    56  	currentUser, err := cmd.Config.CurrentUser()
    57  	if err != nil {
    58  		return err
    59  	}
    60  
    61  	if !cmd.Force {
    62  		response, promptErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the app {{.AppName}}?", map[string]interface{}{
    63  			"AppName": cmd.RequiredArgs.AppName,
    64  		})
    65  
    66  		if promptErr != nil {
    67  			return promptErr
    68  		}
    69  
    70  		if !response {
    71  			cmd.UI.DisplayText("Delete cancelled")
    72  			return nil
    73  		}
    74  	}
    75  
    76  	cmd.UI.DisplayTextWithFlavor("Deleting app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{
    77  		"AppName":   cmd.RequiredArgs.AppName,
    78  		"OrgName":   cmd.Config.TargetedOrganization().Name,
    79  		"SpaceName": cmd.Config.TargetedSpace().Name,
    80  		"Username":  currentUser.Name,
    81  	})
    82  
    83  	warnings, err := cmd.Actor.DeleteApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID)
    84  	cmd.UI.DisplayWarnings(warnings)
    85  	if err != nil {
    86  		switch err.(type) {
    87  		case actionerror.ApplicationNotFoundError:
    88  			cmd.UI.DisplayTextWithFlavor("App {{.AppName}} does not exist", map[string]interface{}{
    89  				"AppName": cmd.RequiredArgs.AppName,
    90  			})
    91  		default:
    92  			return err
    93  		}
    94  	}
    95  
    96  	cmd.UI.DisplayOK()
    97  
    98  	return nil
    99  }