github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7pushaction/actualize.go (about)

     1  package v7pushaction
     2  
     3  import (
     4  	log "github.com/sirupsen/logrus"
     5  )
     6  
     7  func (actor Actor) Actualize(plan PushPlan, progressBar ProgressBar) (
     8  	<-chan PushPlan, <-chan Event, <-chan Warnings, <-chan error,
     9  ) {
    10  	log.Debugln("Starting to Actualize Push plan:", plan)
    11  	planStream := make(chan PushPlan)
    12  	eventStream := make(chan Event)
    13  	warningsStream := make(chan Warnings)
    14  	errorStream := make(chan error)
    15  
    16  	go func() {
    17  		log.Debug("starting actualize go routine")
    18  		defer close(planStream)
    19  		defer close(eventStream)
    20  		defer close(warningsStream)
    21  		defer close(errorStream)
    22  
    23  		var err error
    24  		var warnings Warnings
    25  		for _, changeAppFunc := range actor.ChangeApplicationSequence(plan) {
    26  			plan, warnings, err = changeAppFunc(plan, eventStream, progressBar)
    27  			warningsStream <- warnings
    28  			if err != nil {
    29  				errorStream <- err
    30  				return
    31  			}
    32  			planStream <- plan
    33  		}
    34  
    35  		log.Debug("completed apply")
    36  		eventStream <- Complete
    37  	}()
    38  
    39  	return planStream, eventStream, warningsStream, errorStream
    40  }