pkg/runner/error_ctx.go (30 lines of code) (raw):

package runner import "fmt" type ErrorCtx struct { description string // description explains what the additional context is additionalCxt string // additional context to be logged when in debug mode logAdditionalCtx bool } func NewErrorCtx(description string, additionalCxt []byte, options ...func(*ErrorCtx)) *ErrorCtx { errCtx := &ErrorCtx{ description: description, additionalCxt: string(additionalCxt), logAdditionalCtx: RunningInDebugMode, } for _, opt := range options { opt(errCtx) } return errCtx } func (e *ErrorCtx) Errorf(message string, v ...any) error { if e.logAdditionalCtx { v = append(v, e.description, e.additionalCxt) return fmt.Errorf(message+", %s: %s", v...) } return fmt.Errorf(message, v...) } func WithErrCtxLogAdditionalCtx(logAdditionalCtx bool) func(*ErrorCtx) { return func(errCtx *ErrorCtx) { errCtx.logAdditionalCtx = logAdditionalCtx } }