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  }