github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/command/v7/apps_command.go (about) 1 package v7 2 3 import ( 4 "strings" 5 6 "code.cloudfoundry.org/cli/resources" 7 "code.cloudfoundry.org/cli/util/ui" 8 ) 9 10 type AppsCommand struct { 11 BaseCommand 12 13 usage interface{} `usage:"CF_NAME apps [--labels SELECTOR]\n\nEXAMPLES:\n CF_NAME apps\n CF_NAME apps --labels 'environment in (production,staging),tier in (backend)'\n CF_NAME apps --labels 'env=dev,!chargeback-code,tier in (backend,worker)'"` 14 relatedCommands interface{} `related_commands:"events, logs, map-route, push, scale, start, stop, restart"` 15 16 Labels string `long:"labels" description:"Selector to filter apps by labels"` 17 } 18 19 func (cmd AppsCommand) Execute(args []string) error { 20 err := cmd.SharedActor.CheckTarget(true, true) 21 if err != nil { 22 return err 23 } 24 25 user, err := cmd.Config.CurrentUser() 26 if err != nil { 27 return err 28 } 29 30 cmd.UI.DisplayTextWithFlavor("Getting apps in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 31 "OrgName": cmd.Config.TargetedOrganization().Name, 32 "SpaceName": cmd.Config.TargetedSpace().Name, 33 "Username": user.Name, 34 }) 35 cmd.UI.DisplayNewline() 36 37 summaries, warnings, err := cmd.Actor.GetAppSummariesForSpace(cmd.Config.TargetedSpace().GUID, cmd.Labels) 38 cmd.UI.DisplayWarnings(warnings) 39 if err != nil { 40 return err 41 } 42 43 if len(summaries) == 0 { 44 cmd.UI.DisplayText("No apps found") 45 return nil 46 } 47 48 table := [][]string{ 49 { 50 cmd.UI.TranslateText("name"), 51 cmd.UI.TranslateText("requested state"), 52 cmd.UI.TranslateText("processes"), 53 cmd.UI.TranslateText("routes"), 54 }, 55 } 56 57 for _, summary := range summaries { 58 table = append(table, []string{ 59 summary.Name, 60 cmd.UI.TranslateText(strings.ToLower(string(summary.State))), 61 summary.ProcessSummaries.String(), 62 getURLs(summary.Routes), 63 }) 64 } 65 66 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 67 68 return nil 69 } 70 71 func getURLs(routes []resources.Route) string { 72 var routeURLs []string 73 for _, route := range routes { 74 routeURLs = append(routeURLs, route.URL) 75 } 76 77 return strings.Join(routeURLs, ", ") 78 }