func()

in cmd/certificate_list.go [54:94]


func (o certificateListOperation) find() (acm.Certificates, error) {
	var wg sync.WaitGroup

	o.output.Debug("Listing certificates [API=acm Action=ListCertificates]")
	certificates, err := o.acm.ListCertificates()

	if err != nil {
		return acm.Certificates{}, err
	}

	errs := make(chan error)
	done := make(chan bool)
	limiter := rate.NewLimiter(describeRequestLimitRate, 1)

	for i := 0; i < len(certificates); i++ {
		wg.Add(1)

		go func(index int) {
			defer wg.Done()

			if err := limiter.Wait(context.Background()); err == nil {
				o.output.Debug("Describing certificate [API=acm Action=DescribeCertificate ARN=%s]", certificates[index].ARN)
				if err := o.acm.InflateCertificate(&certificates[index]); err != nil {
					errs <- err
				}
			}
		}(i)
	}

	go func() {
		wg.Wait()
		done <- true
	}()

	select {
	case err := <-errs:
		return acm.Certificates{}, err
	case <-done:
		return certificates, nil
	}
}