github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+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 }