nidus-sync/lint/error.go
Eli Ribble c7a7e8431c
lint: fix errcheck for fmt.Fprintf/Fprint across multiple files
Add lint.Fprint helper for unchecked fmt.Fprint calls.
Use lint.Fprintf/Fprint in api/event.go, api/image.go, rmo/root.go.
Add explicit error check for fmt.Fprintf in middleware/terminal.go cW.
2026-05-09 02:21:53 +00:00

61 lines
1.2 KiB
Go

package lint
import (
"context"
"fmt"
"io"
"github.com/rs/zerolog/log"
)
type Errorable = func() error
func LogOnErr(f Errorable, msg string) {
e := f()
if e != nil {
log.Error().Err(e).Msg(msg)
}
}
type ErrorableCtx = func(context.Context) error
func LogOnErrCtx(f ErrorableCtx, ctx context.Context, msg string) {
e := f(ctx)
if e != nil {
log.Error().Err(e).Msg(msg)
}
}
func LogOnErrRollback(f ErrorableCtx, ctx context.Context, msg string) {
e := f(ctx)
if e != nil {
// We're fine with rollbacks that are already properly closed
if e.Error() == "sql: transaction has already been committed or rolled back" {
return
}
log.Error().Err(e).Msg(msg)
}
}
// Fprintf writes a formatted string to w, logging any error.
func Fprintf(w io.Writer, format string, args ...any) {
_, err := fmt.Fprintf(w, format, args...)
if err != nil {
log.Error().Err(err).Msg("fprintf failed")
}
}
// Write writes p to w, logging any error.
func Write(w io.Writer, p []byte) {
_, err := w.Write(p)
if err != nil {
log.Error().Err(err).Msg("write failed")
}
}
// Fprint writes a string to w, logging any error.
func Fprint(w io.Writer, a ...any) {
_, err := fmt.Fprint(w, a...)
if err != nil {
log.Error().Err(err).Msg("fprint failed")
}
}