MCPcopy
hub / github.com/cloudfoundry/cli / GetBuildpackByNameAndStackAndLifecycle

Method GetBuildpackByNameAndStackAndLifecycle

actor/v7action/buildpack.go:44–90  ·  view source on GitHub ↗

GetBuildpackByNameAndStackAndLifecycle returns a buildpack with the provided name, stack, and lifecycle. If `buildpackStack` is not specified, and there are multiple buildpacks with the same name, it will return the one with no stack, if present. If `buildpackLifecycle` is not specified and there ar

(buildpackName string, buildpackStack string, buildpackLifecycle string)

Source from the content-addressed store, hash-verified

42// present. If `buildpackLifecycle` is not specified and there are multiple buildpacks with
43// the same name, it will return the one with the default_app_lifecycle, if present.
44func (actor Actor) GetBuildpackByNameAndStackAndLifecycle(buildpackName string, buildpackStack string, buildpackLifecycle string) (resources.Buildpack, Warnings, error) {
45 var (
46 buildpacks []resources.Buildpack
47 warnings ccv3.Warnings
48 err error
49 )
50
51 queries := []ccv3.Query{{
52 Key: ccv3.NameFilter,
53 Values: []string{buildpackName},
54 }}
55
56 if buildpackStack != "" {
57 queries = append(queries, ccv3.Query{
58 Key: ccv3.StackFilter,
59 Values: []string{buildpackStack},
60 })
61 }
62
63 if buildpackLifecycle != "" {
64 queries = append(queries, ccv3.Query{
65 Key: ccv3.LifecycleFilter,
66 Values: []string{buildpackLifecycle},
67 })
68 }
69
70 buildpacks, warnings, err = actor.CloudControllerClient.GetBuildpacks(queries...)
71
72 if err != nil {
73 return resources.Buildpack{}, Warnings(warnings), err
74 }
75
76 if len(buildpacks) == 0 {
77 return resources.Buildpack{}, Warnings(warnings), actionerror.BuildpackNotFoundError{BuildpackName: buildpackName, StackName: buildpackStack, Lifecycle: buildpackLifecycle}
78 }
79
80 if len(buildpacks) > 1 {
81 for _, buildpack := range buildpacks {
82 if buildpack.Stack == "" {
83 return buildpack, Warnings(warnings), nil
84 }
85 }
86 return resources.Buildpack{}, Warnings(warnings), actionerror.MultipleBuildpacksFoundError{BuildpackName: buildpackName}
87 }
88
89 return buildpacks[0], Warnings(warnings), err
90}
91
92func (actor Actor) CreateBuildpack(buildpack resources.Buildpack) (resources.Buildpack, Warnings, error) {
93 buildpack, warnings, err := actor.CloudControllerClient.CreateBuildpack(buildpack)

Implementers 1

FakeActorcommand/v7/v7fakes/fake_actor.go

Calls 2

WarningsTypeAlias · 0.70
GetBuildpacksMethod · 0.65

Tested by

no test coverage detected