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

     1  package application
     2  
     3  import (
     4  	. "github.com/cloudfoundry/cli/cf/i18n"
     5  	"strings"
     6  
     7  	"github.com/cloudfoundry/cli/cf/api"
     8  	"github.com/cloudfoundry/cli/cf/command_metadata"
     9  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
    10  	"github.com/cloudfoundry/cli/cf/formatters"
    11  	"github.com/cloudfoundry/cli/cf/requirements"
    12  	"github.com/cloudfoundry/cli/cf/terminal"
    13  	"github.com/cloudfoundry/cli/cf/ui_helpers"
    14  	"github.com/codegangsta/cli"
    15  )
    16  
    17  type ListApps struct {
    18  	ui             terminal.UI
    19  	config         core_config.Reader
    20  	appSummaryRepo api.AppSummaryRepository
    21  }
    22  
    23  func NewListApps(ui terminal.UI, config core_config.Reader, appSummaryRepo api.AppSummaryRepository) (cmd ListApps) {
    24  	cmd.ui = ui
    25  	cmd.config = config
    26  	cmd.appSummaryRepo = appSummaryRepo
    27  	return
    28  }
    29  
    30  func (cmd ListApps) Metadata() command_metadata.CommandMetadata {
    31  	return command_metadata.CommandMetadata{
    32  		Name:        "apps",
    33  		ShortName:   "a",
    34  		Description: T("List all apps in the target space"),
    35  		Usage:       "CF_NAME apps",
    36  	}
    37  }
    38  
    39  func (cmd ListApps) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    40  	if len(c.Args()) != 0 {
    41  		cmd.ui.FailWithUsage(c)
    42  	}
    43  	reqs = []requirements.Requirement{
    44  		requirementsFactory.NewLoginRequirement(),
    45  		requirementsFactory.NewTargetedSpaceRequirement(),
    46  	}
    47  	return
    48  }
    49  
    50  func (cmd ListApps) Run(c *cli.Context) {
    51  	cmd.ui.Say(T("Getting apps in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...",
    52  		map[string]interface{}{
    53  			"OrgName":   terminal.EntityNameColor(cmd.config.OrganizationFields().Name),
    54  			"SpaceName": terminal.EntityNameColor(cmd.config.SpaceFields().Name),
    55  			"Username":  terminal.EntityNameColor(cmd.config.Username())}))
    56  
    57  	apps, apiErr := cmd.appSummaryRepo.GetSummariesInCurrentSpace()
    58  
    59  	if apiErr != nil {
    60  		cmd.ui.Failed(apiErr.Error())
    61  		return
    62  	}
    63  
    64  	cmd.ui.Ok()
    65  	cmd.ui.Say("")
    66  
    67  	if len(apps) == 0 {
    68  		cmd.ui.Say(T("No apps found"))
    69  		return
    70  	}
    71  
    72  	table := terminal.NewTable(cmd.ui, []string{T("name"), T("requested state"), T("instances"), T("memory"), T("disk"), T("urls")})
    73  
    74  	for _, application := range apps {
    75  		var urls []string
    76  		for _, route := range application.Routes {
    77  			urls = append(urls, route.URL())
    78  		}
    79  
    80  		table.Add(
    81  			application.Name,
    82  			ui_helpers.ColoredAppState(application.ApplicationFields),
    83  			ui_helpers.ColoredAppInstances(application.ApplicationFields),
    84  			formatters.ByteSize(application.Memory*formatters.MEGABYTE),
    85  			formatters.ByteSize(application.DiskQuota*formatters.MEGABYTE),
    86  			strings.Join(urls, ", "),
    87  		)
    88  	}
    89  
    90  	table.Print()
    91  }