func()

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
}