github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/servicebroker/service_brokers.go (about) 1 package servicebroker 2 3 import ( 4 "sort" 5 6 "github.com/cloudfoundry/cli/cf/api" 7 "github.com/cloudfoundry/cli/cf/command_registry" 8 "github.com/cloudfoundry/cli/cf/configuration/core_config" 9 . "github.com/cloudfoundry/cli/cf/i18n" 10 "github.com/cloudfoundry/cli/cf/models" 11 "github.com/cloudfoundry/cli/cf/requirements" 12 "github.com/cloudfoundry/cli/cf/terminal" 13 "github.com/cloudfoundry/cli/flags" 14 ) 15 16 type ListServiceBrokers struct { 17 ui terminal.UI 18 config core_config.Reader 19 repo api.ServiceBrokerRepository 20 } 21 22 type serviceBrokerTable []serviceBrokerRow 23 24 type serviceBrokerRow struct { 25 name string 26 url string 27 } 28 29 func init() { 30 command_registry.Register(&ListServiceBrokers{}) 31 } 32 33 func (cmd *ListServiceBrokers) MetaData() command_registry.CommandMetadata { 34 return command_registry.CommandMetadata{ 35 Name: "service-brokers", 36 Description: T("List service brokers"), 37 Usage: "CF_NAME service-brokers", 38 } 39 } 40 41 func (cmd *ListServiceBrokers) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) { 42 if len(fc.Args()) != 0 { 43 cmd.ui.Failed(T("Incorrect Usage. No argument required\n\n") + command_registry.Commands.CommandUsage("service-brokers")) 44 } 45 46 reqs = append(reqs, requirementsFactory.NewLoginRequirement()) 47 return 48 } 49 50 func (cmd *ListServiceBrokers) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 51 cmd.ui = deps.Ui 52 cmd.config = deps.Config 53 cmd.repo = deps.RepoLocator.GetServiceBrokerRepository() 54 return cmd 55 } 56 57 func (cmd *ListServiceBrokers) Execute(c flags.FlagContext) { 58 sbTable := serviceBrokerTable{} 59 60 cmd.ui.Say(T("Getting service brokers as {{.Username}}...\n", 61 map[string]interface{}{ 62 "Username": terminal.EntityNameColor(cmd.config.Username()), 63 })) 64 65 table := cmd.ui.Table([]string{T("name"), T("url")}) 66 foundBrokers := false 67 apiErr := cmd.repo.ListServiceBrokers(func(serviceBroker models.ServiceBroker) bool { 68 sbTable = append(sbTable, serviceBrokerRow{ 69 name: serviceBroker.Name, 70 url: serviceBroker.Url, 71 }) 72 foundBrokers = true 73 return true 74 }) 75 76 sort.Sort(sbTable) 77 78 for _, sb := range sbTable { 79 table.Add(sb.name, sb.url) 80 } 81 82 table.Print() 83 84 if apiErr != nil { 85 cmd.ui.Failed(apiErr.Error()) 86 return 87 } 88 89 if !foundBrokers { 90 cmd.ui.Say(T("No service brokers found")) 91 } 92 } 93 94 func (a serviceBrokerTable) Len() int { return len(a) } 95 func (a serviceBrokerTable) Swap(i, j int) { a[i], a[j] = a[j], a[i] } 96 func (a serviceBrokerTable) Less(i, j int) bool { return a[i].name < a[j].name }