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