github.com/sleungcy/cli@v7.1.0+incompatible/command/v7/delete_buildpack_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 DeleteBuildpackCommand struct {
     9  	BaseCommand
    10  
    11  	RequiredArgs    flag.BuildpackName `positional-args:"yes"`
    12  	usage           interface{}        `usage:"CF_NAME delete-buildpack BUILDPACK [-f] [-s STACK]"`
    13  	relatedCommands interface{}        `related_commands:"buildpacks"`
    14  	Force           bool               `long:"force" short:"f" description:"Force deletion without confirmation"`
    15  	Stack           string             `long:"stack" short:"s" description:"Specify stack to disambiguate buildpacks with the same name. Required when buildpack name is ambiguous"`
    16  }
    17  
    18  func (cmd DeleteBuildpackCommand) Execute(args []string) error {
    19  	err := cmd.SharedActor.CheckTarget(false, false)
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	if !cmd.Force {
    25  		response, uiErr := cmd.UI.DisplayBoolPrompt(false, "Really delete the {{.ModelType}} {{.ModelName}}?", map[string]interface{}{
    26  			"ModelType": "buildpack",
    27  			"ModelName": cmd.RequiredArgs.Buildpack,
    28  		})
    29  		if uiErr != nil {
    30  			return uiErr
    31  		}
    32  
    33  		if !response {
    34  			cmd.UI.DisplayText("Delete cancelled")
    35  			return nil
    36  		}
    37  	}
    38  
    39  	if cmd.Stack == "" {
    40  		cmd.UI.DisplayTextWithFlavor("Deleting buildpack {{.BuildpackName}}...", map[string]interface{}{
    41  			"BuildpackName": cmd.RequiredArgs.Buildpack,
    42  		})
    43  
    44  	} else {
    45  		cmd.UI.DisplayTextWithFlavor("Deleting buildpack {{.BuildpackName}} with stack {{.Stack}}...", map[string]interface{}{
    46  			"BuildpackName": cmd.RequiredArgs.Buildpack,
    47  			"Stack":         cmd.Stack,
    48  		})
    49  	}
    50  	warnings, err := cmd.Actor.DeleteBuildpackByNameAndStack(cmd.RequiredArgs.Buildpack, cmd.Stack)
    51  	cmd.UI.DisplayWarnings(warnings)
    52  
    53  	if err != nil {
    54  		switch err.(type) {
    55  		case actionerror.BuildpackNotFoundError:
    56  			if cmd.Stack == "" {
    57  				cmd.UI.DisplayWarning("Buildpack '{{.BuildpackName}}' does not exist.", map[string]interface{}{
    58  					"BuildpackName": cmd.RequiredArgs.Buildpack,
    59  				})
    60  			} else {
    61  				cmd.UI.DisplayWarning("Buildpack '{{.BuildpackName}}' with stack '{{.Stack}}' not found.", map[string]interface{}{
    62  					"BuildpackName": cmd.RequiredArgs.Buildpack,
    63  					"Stack":         cmd.Stack,
    64  				})
    65  			}
    66  		default:
    67  			return err
    68  		}
    69  	}
    70  
    71  	cmd.UI.DisplayOK()
    72  
    73  	return nil
    74  }