github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/spaces_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/command" 7 "code.cloudfoundry.org/cli/command/v7/shared" 8 "code.cloudfoundry.org/cli/util/ui" 9 "code.cloudfoundry.org/clock" 10 ) 11 12 //go:generate counterfeiter . SpacesActor 13 14 type SpacesActor interface { 15 GetOrganizationSpacesWithLabelSelector(orgGUID string, labelSelector string) ([]v7action.Space, v7action.Warnings, error) 16 } 17 18 type SpacesCommand struct { 19 usage interface{} `usage:"CF_NAME spaces [--labels SELECTOR]\n\nEXAMPLES:\n CF_NAME spaces\n CF_NAME spaces --labels 'environment in (production,staging),tier in (backend)'\n CF_NAME spaces --labels 'env=dev,!chargeback-code,tier in (backend,worker)'"` 20 relatedCommands interface{} `related_commands:"create-space, set-space-role, space, space-users"` 21 22 Labels string `long:"labels" description:"Selector to filter spaces by labels"` 23 24 UI command.UI 25 Config command.Config 26 SharedActor command.SharedActor 27 Actor SpacesActor 28 } 29 30 func (cmd *SpacesCommand) Setup(config command.Config, ui command.UI) error { 31 cmd.Config = config 32 cmd.UI = ui 33 cmd.SharedActor = sharedaction.NewActor(config) 34 35 ccClient, _, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 36 if err != nil { 37 return err 38 } 39 cmd.Actor = v7action.NewActor(ccClient, config, nil, nil, clock.NewClock()) 40 41 return nil 42 } 43 44 func (cmd SpacesCommand) Execute([]string) error { 45 err := cmd.SharedActor.CheckTarget(true, false) 46 if err != nil { 47 return err 48 } 49 50 user, err := cmd.Config.CurrentUser() 51 if err != nil { 52 return err 53 } 54 55 cmd.UI.DisplayTextWithFlavor("Getting spaces in org {{.OrgName}} as {{.CurrentUser}}...", map[string]interface{}{ 56 "OrgName": cmd.Config.TargetedOrganization().Name, 57 "CurrentUser": user.Name, 58 }) 59 cmd.UI.DisplayNewline() 60 61 spaces, warnings, err := cmd.Actor.GetOrganizationSpacesWithLabelSelector(cmd.Config.TargetedOrganization().GUID, cmd.Labels) 62 cmd.UI.DisplayWarnings(warnings) 63 if err != nil { 64 return err 65 } 66 67 if len(spaces) == 0 { 68 cmd.UI.DisplayText("No spaces found.") 69 } else { 70 cmd.displaySpaces(spaces) 71 } 72 73 return nil 74 } 75 76 func (cmd SpacesCommand) displaySpaces(spaces []v7action.Space) { 77 table := [][]string{{cmd.UI.TranslateText("name")}} 78 79 for _, space := range spaces { 80 table = append(table, []string{space.Name}) 81 } 82 83 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 84 }