github.com/windmeup/goreleaser@v1.21.95/internal/tmpl/errors.go (about)

     1  package tmpl
     2  
     3  import (
     4  	"fmt"
     5  	"regexp"
     6  )
     7  
     8  var res = []*regexp.Regexp{
     9  	regexp.MustCompile(`^template: tmpl:\d+:\d+: executing ".+" at .+: `),
    10  	regexp.MustCompile(`^template: tmpl:\d+:\d+: `),
    11  	regexp.MustCompile(`^template: tmpl:\d+: `),
    12  }
    13  
    14  func newTmplError(str string, err error) error {
    15  	if err == nil {
    16  		return nil
    17  	}
    18  	details := err.Error()
    19  	for _, re := range res {
    20  		if re.MatchString(details) {
    21  			details = re.ReplaceAllString(details, "")
    22  			break
    23  		}
    24  	}
    25  	return Error{str, details, err}
    26  }
    27  
    28  // Error is returned on any template error.
    29  type Error struct {
    30  	str     string
    31  	details string
    32  	err     error
    33  }
    34  
    35  func (e Error) Unwrap() error {
    36  	return e.err
    37  }
    38  
    39  func (e Error) Error() string {
    40  	return fmt.Sprintf(
    41  		"template: failed to apply %q: %s",
    42  		e.str,
    43  		e.details,
    44  	)
    45  }