errors.go raw
1 package certificate
2
3 import (
4 "errors"
5 "fmt"
6 )
7
8 type obtainError struct {
9 data map[string]error
10 }
11
12 func newObtainError() *obtainError {
13 return &obtainError{data: make(map[string]error)}
14 }
15
16 func (e *obtainError) Add(domain string, err error) {
17 e.data[domain] = err
18 }
19
20 func (e *obtainError) Join() error {
21 if e == nil {
22 return nil
23 }
24
25 if len(e.data) == 0 {
26 return nil
27 }
28
29 var err error
30 for d, e := range e.data {
31 err = errors.Join(err, fmt.Errorf("%s: %w", d, e))
32 }
33
34 return fmt.Errorf("error: one or more domains had a problem:\n%w", err)
35 }
36
37 type domainError struct {
38 Domain string
39 Error error
40 }
41