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 }