github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/v3action/build.go (about) 1 package v3action 2 3 import ( 4 "time" 5 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 7 ) 8 9 type Build ccv3.Build 10 11 func (actor Actor) StagePackage(packageGUID string) (<-chan Build, <-chan Warnings, <-chan error) { 12 buildStream := make(chan Build) 13 warningsStream := make(chan Warnings) 14 errorStream := make(chan error) 15 16 go func() { 17 defer close(buildStream) 18 defer close(warningsStream) 19 defer close(errorStream) 20 21 build := ccv3.Build{Package: ccv3.Package{GUID: packageGUID}} 22 build, allWarnings, err := actor.CloudControllerClient.CreateBuild(build) 23 warningsStream <- Warnings(allWarnings) 24 25 if err != nil { 26 errorStream <- err 27 return 28 } 29 30 for build.State == ccv3.BuildStateStaging { 31 time.Sleep(actor.Config.PollingInterval()) 32 33 var warnings ccv3.Warnings 34 build, warnings, err = actor.CloudControllerClient.GetBuild(build.GUID) 35 warningsStream <- Warnings(warnings) 36 if err != nil { 37 errorStream <- err 38 return 39 } 40 } 41 buildStream <- Build(build) 42 }() 43 44 return buildStream, warningsStream, errorStream 45 }