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 }