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  }