github.com/cloudfoundry/cli@v7.1.0+incompatible/command/plugin/uninstall_plugin_command.go (about)

     1  package plugin
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/pluginaction"
     6  	"code.cloudfoundry.org/cli/command"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/plugin/shared"
     9  	"code.cloudfoundry.org/cli/command/translatableerror"
    10  )
    11  
    12  //go:generate counterfeiter . UninstallPluginActor
    13  
    14  type UninstallPluginActor interface {
    15  	UninstallPlugin(uninstaller pluginaction.PluginUninstaller, name string) error
    16  }
    17  
    18  type UninstallPluginCommand struct {
    19  	RequiredArgs    flag.PluginName `positional-args:"yes"`
    20  	usage           interface{}     `usage:"CF_NAME uninstall-plugin PLUGIN-NAME"`
    21  	relatedCommands interface{}     `related_commands:"plugins"`
    22  
    23  	Config command.Config
    24  	UI     command.UI
    25  	Actor  UninstallPluginActor
    26  }
    27  
    28  func (cmd *UninstallPluginCommand) Setup(config command.Config, ui command.UI) error {
    29  	cmd.Config = config
    30  	cmd.UI = ui
    31  	cmd.Actor = pluginaction.NewActor(config, nil)
    32  	return nil
    33  }
    34  
    35  func (cmd UninstallPluginCommand) Execute(args []string) error {
    36  	pluginName := cmd.RequiredArgs.PluginName
    37  	plugin, exist := cmd.Config.GetPluginCaseInsensitive(pluginName)
    38  	if !exist {
    39  		return translatableerror.PluginNotFoundError{PluginName: pluginName}
    40  	}
    41  
    42  	cmd.UI.DisplayTextWithFlavor("Uninstalling plugin {{.PluginName}}...",
    43  		map[string]interface{}{
    44  			"PluginName": plugin.Name,
    45  		})
    46  
    47  	rpcService, err := shared.NewRPCService(cmd.Config, cmd.UI)
    48  	if err != nil {
    49  		return err
    50  	}
    51  
    52  	err = cmd.Actor.UninstallPlugin(rpcService, plugin.Name)
    53  	if err != nil {
    54  		switch e := err.(type) {
    55  		case actionerror.PluginBinaryRemoveFailedError:
    56  			return translatableerror.PluginBinaryRemoveFailedError{
    57  				Err: e.Err,
    58  			}
    59  		case actionerror.PluginExecuteError:
    60  			return translatableerror.PluginBinaryUninstallError{
    61  				Err: e.Err,
    62  			}
    63  		default:
    64  			return err
    65  		}
    66  	}
    67  
    68  	cmd.UI.DisplayOK()
    69  	cmd.UI.DisplayText("Plugin {{.PluginName}} {{.PluginVersion}} successfully uninstalled.",
    70  		map[string]interface{}{
    71  			"PluginName":    plugin.Name,
    72  			"PluginVersion": plugin.Version,
    73  		})
    74  
    75  	return nil
    76  }