github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/plugin/uninstall_plugin.go (about) 1 package plugin 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/cloudfoundry/cli/cf/command_metadata" 8 "github.com/cloudfoundry/cli/cf/configuration/plugin_config" 9 . "github.com/cloudfoundry/cli/cf/i18n" 10 "github.com/cloudfoundry/cli/cf/requirements" 11 "github.com/cloudfoundry/cli/cf/terminal" 12 "github.com/codegangsta/cli" 13 ) 14 15 type PluginUninstall struct { 16 ui terminal.UI 17 config plugin_config.PluginConfiguration 18 } 19 20 func NewPluginUninstall(ui terminal.UI, config plugin_config.PluginConfiguration) *PluginUninstall { 21 return &PluginUninstall{ 22 ui: ui, 23 config: config, 24 } 25 } 26 27 func (cmd *PluginUninstall) Metadata() command_metadata.CommandMetadata { 28 return command_metadata.CommandMetadata{ 29 Name: "uninstall-plugin", 30 Description: T("Uninstall the plugin defined in command argument"), 31 Usage: T("CF_NAME uninstall-plugin PLUGIN-NAME"), 32 } 33 } 34 35 func (cmd *PluginUninstall) GetRequirements(_ requirements.Factory, c *cli.Context) (req []requirements.Requirement, err error) { 36 if len(c.Args()) != 1 { 37 cmd.ui.FailWithUsage(c) 38 } 39 40 return 41 } 42 43 func (cmd *PluginUninstall) Run(c *cli.Context) { 44 45 pluginName := c.Args()[0] 46 pluginNameMap := map[string]interface{}{"PluginName": pluginName} 47 48 cmd.ui.Say(fmt.Sprintf(T("Uninstalling plugin {{.PluginName}}...", pluginNameMap))) 49 50 plugins := cmd.config.Plugins() 51 52 if _, ok := plugins[pluginName]; !ok { 53 cmd.ui.Failed(fmt.Sprintf(T("Plugin name {{.PluginName}} does not exist", pluginNameMap))) 54 } 55 56 pluginMetadata := plugins[pluginName] 57 os.Remove(pluginMetadata.Location) 58 59 cmd.config.RemovePlugin(pluginName) 60 61 cmd.ui.Ok() 62 cmd.ui.Say(fmt.Sprintf(T("Plugin {{.PluginName}} successfully uninstalled.", pluginNameMap))) 63 }