in plugin/step/group/group.go [50:82]
func (g *StepGroup) Download() (err error) {
g.logger.WriteEvent(go2chef.NewEvent("STEP_GROUP_DOWNLOAD_START", TypeName, g.GroupName))
defer func() {
event := "STEP_GROUP_DOWNLOAD_COMPLETE"
if err != nil {
event = "STEP_GROUP_DOWNLOAD_FAILURE"
}
g.logger.WriteEvent(go2chef.NewEvent(event, TypeName, g.GroupName))
}()
var wg sync.WaitGroup
errs := make(chan error, len(g.Steps))
for _, s := range g.Steps {
wg.Add(1)
go func(st go2chef.Step, errs chan<- error) {
defer wg.Done()
if err := st.Download(); err != nil {
errs <- err
}
}(s, errs)
}
wg.Wait()
close(errs)
count := 0
for err := range errs {
log.Printf("caught error: %s", err)
count++
}
if count != 0 {
return fmt.Errorf("errors during step group execution")
}
return nil
}