github.com/loafoe/cli@v7.1.0+incompatible/command/v7/stacks_command.go (about) 1 package v7 2 3 import ( 4 "sort" 5 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/util/sorting" 8 "code.cloudfoundry.org/cli/util/ui" 9 ) 10 11 type StacksCommand struct { 12 BaseCommand 13 14 usage interface{} `usage:"CF_NAME stacks [--labels SELECTOR]\n\nEXAMPLES:\n CF_NAME stacks\n CF_NAME stacks --labels 'environment in (production,staging),tier in (backend)'\n CF_NAME stacks --labels 'env=dev,!chargeback-code,tier in (backend,worker)'"` 15 relatedCommands interface{} `related_commands:"create-buildpack, delete-buildpack, rename-buildpack, stack, update-buildpack"` 16 Labels string `long:"labels" description:"Selector to filter stacks by labels"` 17 } 18 19 func (cmd StacksCommand) Execute(args []string) error { 20 err := cmd.SharedActor.CheckTarget(false, false) 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 stacks as {{.Username}}...", map[string]interface{}{ 31 "Username": user.Name, 32 }) 33 cmd.UI.DisplayNewline() 34 35 stacks, warnings, err := cmd.Actor.GetStacks(cmd.Labels) 36 cmd.UI.DisplayWarnings(warnings) 37 if err != nil { 38 return err 39 } 40 41 sort.Slice(stacks, func(i, j int) bool { return sorting.LessIgnoreCase(stacks[i].Name, stacks[j].Name) }) 42 43 cmd.displayTable(stacks) 44 45 return nil 46 } 47 48 func (cmd StacksCommand) displayTable(stacks []v7action.Stack) { 49 if len(stacks) > 0 { 50 var keyValueTable = [][]string{ 51 {"name", "description"}, 52 } 53 for _, stack := range stacks { 54 keyValueTable = append(keyValueTable, []string{stack.Name, stack.Description}) 55 } 56 57 cmd.UI.DisplayTableWithHeader("", keyValueTable, ui.DefaultTableSpacePadding) 58 } else { 59 cmd.UI.DisplayText("No stacks found.") 60 } 61 }