github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/plugin/plugins.go (about)

     1  package plugin
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/cloudfoundry/cli/cf/command_metadata"
     7  	"github.com/cloudfoundry/cli/cf/configuration/plugin_config"
     8  	. "github.com/cloudfoundry/cli/cf/i18n"
     9  	"github.com/cloudfoundry/cli/cf/requirements"
    10  	"github.com/cloudfoundry/cli/cf/terminal"
    11  	"github.com/codegangsta/cli"
    12  )
    13  
    14  type Plugins struct {
    15  	ui     terminal.UI
    16  	config plugin_config.PluginConfiguration
    17  }
    18  
    19  func NewPlugins(ui terminal.UI, config plugin_config.PluginConfiguration) *Plugins {
    20  	return &Plugins{
    21  		ui:     ui,
    22  		config: config,
    23  	}
    24  }
    25  
    26  func (cmd *Plugins) Metadata() command_metadata.CommandMetadata {
    27  	return command_metadata.CommandMetadata{
    28  		Name:        "plugins",
    29  		Description: T("list all available plugin commands"),
    30  		Usage:       T("CF_NAME plugins"),
    31  	}
    32  }
    33  
    34  func (cmd *Plugins) GetRequirements(_ requirements.Factory, c *cli.Context) (req []requirements.Requirement, err error) {
    35  	if len(c.Args()) != 0 {
    36  		cmd.ui.FailWithUsage(c)
    37  	}
    38  	return
    39  }
    40  
    41  func (cmd *Plugins) Run(c *cli.Context) {
    42  	var version string
    43  
    44  	cmd.ui.Say(T("Listing Installed Plugins..."))
    45  
    46  	plugins := cmd.config.Plugins()
    47  
    48  	table := terminal.NewTable(cmd.ui, []string{T("Plugin Name"), T("Version"), T("Command Name"), T("Command Help")})
    49  
    50  	for pluginName, metadata := range plugins {
    51  		if metadata.Version.Major == 0 && metadata.Version.Minor == 0 && metadata.Version.Build == 0 {
    52  			version = "N/A"
    53  		} else {
    54  			version = fmt.Sprintf("%d.%d.%d", metadata.Version.Major, metadata.Version.Minor, metadata.Version.Build)
    55  		}
    56  
    57  		for _, command := range metadata.Commands {
    58  			if command.Alias == "" {
    59  				table.Add(pluginName, version, command.Name, command.HelpText)
    60  			} else {
    61  				table.Add(pluginName, version, command.Name+", "+command.Alias, command.HelpText)
    62  			}
    63  		}
    64  	}
    65  
    66  	cmd.ui.Ok()
    67  	cmd.ui.Say("")
    68  
    69  	table.Print()
    70  }