github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/buildpacks_command.go (about) 1 package v7 2 3 import ( 4 "strconv" 5 6 "code.cloudfoundry.org/cli/actor/sharedaction" 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/cli/command" 9 "code.cloudfoundry.org/cli/command/v7/shared" 10 "code.cloudfoundry.org/cli/util/ui" 11 "code.cloudfoundry.org/clock" 12 ) 13 14 //go:generate counterfeiter . BuildpacksActor 15 16 type BuildpacksActor interface { 17 GetBuildpacks(labelSelector string) ([]v7action.Buildpack, v7action.Warnings, error) 18 } 19 20 type BuildpacksCommand struct { 21 usage interface{} `usage:"CF_NAME buildpacks [--labels SELECTOR]\n\nEXAMPLES:\n CF_NAME buildpacks\n CF_NAME buildpacks --labels 'environment in (production,staging),tier in (backend)'\n CF_NAME buildpacks --labels 'env=dev,!chargeback-code,tier in (backend,worker)'"` 22 relatedCommands interface{} `related_commands:"create-buildpack, delete-buildpack, rename-buildpack, update-buildpack"` 23 24 UI command.UI 25 Config command.Config 26 SharedActor command.SharedActor 27 Actor BuildpacksActor 28 Labels string `long:"labels" description:"Selector to filter buildpacks by labels"` 29 } 30 31 func (cmd *BuildpacksCommand) Setup(config command.Config, ui command.UI) error { 32 cmd.UI = ui 33 cmd.Config = config 34 sharedActor := sharedaction.NewActor(config) 35 cmd.SharedActor = sharedActor 36 37 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 38 if err != nil { 39 return err 40 } 41 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 42 43 return nil 44 } 45 46 func (cmd BuildpacksCommand) Execute(args []string) error { 47 err := cmd.SharedActor.CheckTarget(false, false) 48 if err != nil { 49 return err 50 } 51 52 user, err := cmd.Config.CurrentUser() 53 if err != nil { 54 return err 55 } 56 57 cmd.UI.DisplayTextWithFlavor("Getting buildpacks as {{.Username}}...", map[string]interface{}{ 58 "Username": user.Name, 59 }) 60 cmd.UI.DisplayNewline() 61 62 buildpacks, warnings, err := cmd.Actor.GetBuildpacks(cmd.Labels) 63 cmd.UI.DisplayWarnings(warnings) 64 if err != nil { 65 return err 66 } 67 68 if len(buildpacks) == 0 { 69 cmd.UI.DisplayTextWithFlavor("No buildpacks found") 70 } else { 71 cmd.displayTable(buildpacks) 72 } 73 return nil 74 } 75 76 func (cmd BuildpacksCommand) displayTable(buildpacks []v7action.Buildpack) { 77 if len(buildpacks) > 0 { 78 var keyValueTable = [][]string{ 79 {"position", "name", "stack", "enabled", "locked", "filename"}, 80 } 81 for _, buildpack := range buildpacks { 82 keyValueTable = append(keyValueTable, []string{ 83 strconv.Itoa(buildpack.Position.Value), 84 buildpack.Name, 85 buildpack.Stack, 86 strconv.FormatBool(buildpack.Enabled.Value), 87 strconv.FormatBool(buildpack.Locked.Value), 88 buildpack.Filename, 89 }) 90 } 91 92 cmd.UI.DisplayTableWithHeader("", keyValueTable, ui.DefaultTableSpacePadding) 93 } 94 }