package certificate import ( "errors" "fmt" ) type obtainError struct { data map[string]error } func newObtainError() *obtainError { return &obtainError{data: make(map[string]error)} } func (e *obtainError) Add(domain string, err error) { e.data[domain] = err } func (e *obtainError) Join() error { if e == nil { return nil } if len(e.data) == 0 { return nil } var err error for d, e := range e.data { err = errors.Join(err, fmt.Errorf("%s: %w", d, e)) } return fmt.Errorf("error: one or more domains had a problem:\n%w", err) } type domainError struct { Domain string Error error }