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 }