github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+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 changeFuncs := actor.ChangeApplicationFuncs 24 25 if plan.NoStart { 26 changeFuncs = append(changeFuncs, actor.NoStartFuncs...) 27 } else { 28 changeFuncs = append(changeFuncs, actor.StartFuncs...) 29 } 30 31 var err error 32 var warnings Warnings 33 for _, changeAppFunc := range changeFuncs { 34 plan, warnings, err = changeAppFunc(plan, eventStream, progressBar) 35 warningsStream <- warnings 36 if err != nil { 37 errorStream <- err 38 return 39 } 40 planStream <- plan 41 } 42 43 log.Debug("completed apply") 44 eventStream <- Complete 45 }() 46 return planStream, eventStream, warningsStream, errorStream 47 }