Skip to content

Commit 97af335

Browse files
committed
chore: quick update fix/version at 2025-09-15 23:50:34
1 parent 7726faf commit 97af335

File tree

9 files changed

+119
-53
lines changed

9 files changed

+119
-53
lines changed

assert/util.go

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@ import (
55
"log/slog"
66
"reflect"
77
"runtime/debug"
8+
"sync"
89

910
"github.com/k0kubun/pp/v3"
11+
"github.com/pubgo/funk/log/logfields"
12+
"github.com/samber/lo"
1013
)
1114

1215
func messageFromMsgAndArgs(msgAndArgs ...any) string {
@@ -20,7 +23,21 @@ func messageFromMsgAndArgs(msgAndArgs ...any) string {
2023
}
2124
}
2225

23-
return pp.Sprint(msgAndArgs...)
26+
return pretty().Sprint(msgAndArgs...)
27+
}
28+
29+
func logErr(err error, message string, attrs ...slog.Attr) {
30+
if err == nil {
31+
return
32+
}
33+
34+
attrs = append(attrs,
35+
slog.String(logfields.Module, "assert"),
36+
slog.String(logfields.Error, err.Error()),
37+
slog.String("stack", string(debug.Stack())),
38+
slog.String(logfields.ErrorDetail, pretty().Sprint(err)),
39+
)
40+
slog.Error(message, lo.ToAnySlice(attrs)...)
2441
}
2542

2643
func must(err error, messageArgs ...any) {
@@ -35,26 +52,36 @@ func must(err error, messageArgs ...any) {
3552
message = fmt.Sprintf("msg:%v err:%s", message, err.Error())
3653
}
3754

38-
slog.Error(message)
39-
debug.PrintStack()
55+
logErr(err, message, slog.Bool("panic", true))
4056
panic(err)
4157
}
4258

59+
var pretty = sync.OnceValue(func() *pp.PrettyPrinter {
60+
printer := pp.New()
61+
printer.SetColoringEnabled(false)
62+
printer.SetExportedOnly(false)
63+
printer.SetOmitEmpty(true)
64+
printer.SetMaxDepth(5)
65+
return printer
66+
})
67+
4368
func try(fn func() error) (gErr error) {
4469
if fn == nil {
45-
gErr = fmt.Errorf("[fn] is nil")
70+
gErr = fmt.Errorf("assert: [fn] is nil")
71+
logErr(gErr, gErr.Error())
72+
debug.PrintStack()
4673
return
4774
}
4875

49-
defer func() {
50-
if gErr != nil {
51-
gErr = fmt.Errorf("stack:%s, err:%w", reflect.TypeOf(fn).String(), gErr)
52-
}
53-
}()
54-
5576
defer func() {
5677
if err := recover(); err != nil {
5778
gErr = fmt.Errorf("%v", err)
79+
logErr(gErr, gErr.Error())
80+
debug.PrintStack()
81+
}
82+
83+
if gErr != nil {
84+
gErr = fmt.Errorf("stack:%s, err:%w", reflect.TypeOf(fn).String(), gErr)
5885
}
5986
}()
6087

errors/errcheck/check.go

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,54 @@ import (
44
"context"
55
"fmt"
66

7+
"github.com/pubgo/funk/assert"
78
"github.com/pubgo/funk/errors"
9+
"github.com/pubgo/funk/errors/errinter"
810
"github.com/pubgo/funk/log"
911
"github.com/samber/lo"
1012
)
1113

1214
func RecoveryAndCheck(setter *error, callbacks ...func(err error) error) {
1315
if setter == nil {
14-
errMust(fmt.Errorf("setter is nil"))
16+
assert.Must(fmt.Errorf("errcheck: setter is nil"))
1517
return
1618
}
1719

18-
err := errors.Parse(recover())
19-
gErr := *setter
20-
if err == nil && gErr == nil {
21-
return
20+
err := errinter.ParseError(recover())
21+
if err != nil {
22+
err = errors.WrapStack(err)
2223
}
2324

25+
gErr := *setter
2426
if err == nil {
2527
err = gErr
2628
}
2729

30+
if err == nil {
31+
return
32+
}
33+
2834
for _, fn := range callbacks {
2935
err = fn(err)
3036
if err == nil {
3137
return
3238
}
3339
}
3440

35-
*setter = errors.WrapCaller(err, 1)
41+
*setter = err
3642
}
3743

3844
func Check(errSetter *error, err error, contexts ...context.Context) bool {
45+
defer func() {
46+
if *errSetter == nil {
47+
return
48+
}
49+
50+
logErr(lo.FirstOr(contexts, nil), *errSetter)
51+
}()
52+
3953
if errSetter == nil {
40-
errMust(fmt.Errorf("errSetter is nil"))
54+
assert.Must(fmt.Errorf("errcheck: errSetter is nil"))
4155
return false
4256
}
4357

@@ -51,7 +65,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
5165
}
5266

5367
var ctx = lo.FirstOr(contexts, context.Background())
54-
for _, fn := range GetCheckersFromCtx(ctx) {
68+
for _, fn := range getCheckersFromCtx(ctx) {
5569
err = fn(ctx, err)
5670
if err == nil {
5771
return false
@@ -62,14 +76,15 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
6276
return true
6377
}
6478

65-
func Expect(err error, format string, args ...any) {
66-
if err == nil {
67-
return
68-
}
79+
func Must(err error, args ...any) {
80+
logErr(nil, err)
81+
errNilOrPanic(err, args...)
82+
}
6983

70-
err = errors.WrapCaller(err, 1)
71-
err = errors.Wrapf(err, format, args...)
72-
errMust(err)
84+
func Must1[T any](v T, err error) T {
85+
logErr(nil, err)
86+
errNilOrPanic(err)
87+
return v
7388
}
7489

7590
func Map(err error, fn func(err error) error) error {
@@ -88,12 +103,12 @@ func Inspect(err error, fn func(err error)) {
88103
fn(err)
89104
}
90105

91-
func InspectLog(err error, fn func(logger *log.Event), contexts ...context.Context) {
106+
func InspectLog(err error, fn func(evt *log.Event), contexts ...context.Context) {
92107
if err == nil {
93108
return
94109
}
95110

96-
fn(log.Err(err, contexts...))
111+
logErr(lo.FirstOr(contexts, nil), err, fn)
97112
}
98113

99114
func LogErr(err error, contexts ...context.Context) {

errors/errcheck/context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func CreateCtx(ctx context.Context, errChecks []ErrChecker, upsert ...bool) cont
2525
return context.WithValue(ctx, checkCtx{}, errChecks)
2626
}
2727

28-
func GetCheckersFromCtx(ctx context.Context) []ErrChecker {
28+
func getCheckersFromCtx(ctx context.Context) []ErrChecker {
2929
if ctx == nil {
3030
return nil
3131
}

errors/errcheck/util.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package errcheck
22

33
import (
4+
"context"
45
"fmt"
6+
"runtime/debug"
7+
"sync"
58

9+
"github.com/k0kubun/pp/v3"
610
"github.com/pubgo/funk/errors"
11+
"github.com/pubgo/funk/log"
12+
"github.com/pubgo/funk/log/logfields"
13+
"github.com/rs/zerolog"
14+
"google.golang.org/protobuf/encoding/prototext"
715
)
816

9-
func errMust(err error, args ...any) {
17+
func errNilOrPanic(err error, args ...any) {
1018
if err == nil {
1119
return
1220
}
@@ -19,3 +27,33 @@ func errMust(err error, args ...any) {
1927
errors.Debug(err)
2028
panic(err)
2129
}
30+
31+
func logErr(ctx context.Context, err error, events ...func(e *zerolog.Event)) {
32+
if err == nil {
33+
return
34+
}
35+
36+
log.Error(ctx).
37+
Func(func(e *zerolog.Event) {
38+
e.Str(logfields.Module, "errcheck")
39+
e.Str("stack", string(debug.Stack()))
40+
e.Str(logfields.ErrorDetail, pretty().Sprint(err))
41+
e.Str(logfields.ErrorID, errors.GetErrorId(err))
42+
43+
for _, fn := range events {
44+
fn(e)
45+
}
46+
}).
47+
Str(logfields.Error, err.Error()).
48+
CallerSkipFrame(2).
49+
Msgf("%s\n%s\n", err.Error(), prototext.Format(errors.ParseErrToPb(err)))
50+
}
51+
52+
var pretty = sync.OnceValue(func() *pp.PrettyPrinter {
53+
printer := pp.New()
54+
printer.SetColoringEnabled(false)
55+
printer.SetExportedOnly(false)
56+
printer.SetOmitEmpty(true)
57+
printer.SetMaxDepth(5)
58+
return printer
59+
})

errors/errinter/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func Debug(err error) {
8383
return
8484
}
8585

86-
Console().Println(err)
86+
DebugPretty().Println(err)
8787
}
8888

8989
func MustTagsToAny(tags ...*errorpb.Tag) []*anypb.Any {
@@ -160,7 +160,7 @@ var errPretty = sync.OnceValue(func() *pp.PrettyPrinter {
160160
return printer
161161
})
162162

163-
var Console = sync.OnceValue(func() *pp.PrettyPrinter {
163+
var DebugPretty = sync.OnceValue(func() *pp.PrettyPrinter {
164164
printer := pp.New()
165165
printer.SetColoringEnabled(true)
166166
printer.SetExportedOnly(false)

errors/must.go

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,20 @@ package errors
33
import (
44
"fmt"
55
"os"
6+
7+
"github.com/pubgo/funk/assert"
68
)
79

810
func Must(err error, args ...interface{}) {
9-
if err == nil {
10-
return
11-
}
12-
13-
err = WrapStack(Wrap(err, fmt.Sprint(args...)))
14-
Debug(err)
15-
panic(err)
11+
assert.Must(err, args...)
1612
}
1713

1814
func MustF(err error, msg string, args ...interface{}) {
19-
if err == nil {
20-
return
21-
}
22-
23-
err = WrapStack(Wrap(err, fmt.Sprintf(msg, args...)))
24-
Debug(err)
25-
panic(err)
15+
assert.MustF(err, msg, args...)
2616
}
2717

2818
func Must1[T any](ret T, err error) T {
29-
if err != nil {
30-
err = WrapStack(err)
31-
Debug(err)
32-
panic(err)
33-
}
34-
35-
return ret
19+
return assert.Must1(ret, err)
3620
}
3721

3822
func Exit(err error, args ...interface{}) {

log/logfields/fields.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ const (
77
Error = "error"
88
ErrorDetail = "error_detail"
99
ErrorStack = "error_stack"
10+
ErrorID = "error_id"
1011
)

v2/result/result.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func (r Result[T]) Expect(format string, args ...any) T {
7373

7474
func (r Result[T]) Must() T {
7575
if r.IsErr() {
76+
logErr(nil, r.err)
7677
errNilOrPanic(errors.WrapCaller(r.getErr(), 1))
7778
}
7879

v2/result/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,5 +255,5 @@ func logErr(ctx context.Context, err error, events ...func(e *zerolog.Event)) {
255255
}).
256256
Str(zerolog.ErrorFieldName, err.Error()).
257257
CallerSkipFrame(2).
258-
Msgf("%s\n%s", err.Error(), prototext.Format(errors.ParseErrToPb(err)))
258+
Msgf("%s\n%s\n", err.Error(), prototext.Format(errors.ParseErrToPb(err)))
259259
}

0 commit comments

Comments
 (0)