Skip to content

Commit 5030e67

Browse files
committed
chore: quick update fix/version at 2025-09-16 18:31:37
1 parent 7726faf commit 5030e67

File tree

12 files changed

+161
-107
lines changed

12 files changed

+161
-107
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: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,63 @@ 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"
11+
"github.com/rs/zerolog"
912
"github.com/samber/lo"
1013
)
1114

1215
func RecoveryAndCheck(setter *error, callbacks ...func(err error) error) {
1316
if setter == nil {
14-
errMust(fmt.Errorf("setter is nil"))
17+
assert.Must(fmt.Errorf("errcheck: setter is nil"))
1518
return
1619
}
1720

18-
err := errors.Parse(recover())
19-
gErr := *setter
20-
if err == nil && gErr == nil {
21-
return
21+
defer func() {
22+
if *setter == nil {
23+
return
24+
}
25+
26+
logErr(nil, *setter)
27+
}()
28+
29+
err := errinter.ParseError(recover())
30+
if err != nil {
31+
err = errors.WrapStack(err)
2232
}
2333

34+
gErr := *setter
2435
if err == nil {
2536
err = gErr
2637
}
2738

39+
if err == nil {
40+
return
41+
}
42+
2843
for _, fn := range callbacks {
2944
err = fn(err)
3045
if err == nil {
3146
return
3247
}
3348
}
3449

35-
*setter = errors.WrapCaller(err, 1)
50+
*setter = err
3651
}
3752

3853
func Check(errSetter *error, err error, contexts ...context.Context) bool {
54+
defer func() {
55+
if *errSetter == nil {
56+
return
57+
}
58+
59+
logErr(lo.FirstOr(contexts, nil), *errSetter)
60+
}()
61+
3962
if errSetter == nil {
40-
errMust(fmt.Errorf("errSetter is nil"))
63+
assert.Must(fmt.Errorf("errcheck: errSetter is nil"))
4164
return false
4265
}
4366

@@ -51,7 +74,7 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
5174
}
5275

5376
var ctx = lo.FirstOr(contexts, context.Background())
54-
for _, fn := range GetCheckersFromCtx(ctx) {
77+
for _, fn := range getCheckersFromCtx(ctx) {
5578
err = fn(ctx, err)
5679
if err == nil {
5780
return false
@@ -62,16 +85,6 @@ func Check(errSetter *error, err error, contexts ...context.Context) bool {
6285
return true
6386
}
6487

65-
func Expect(err error, format string, args ...any) {
66-
if err == nil {
67-
return
68-
}
69-
70-
err = errors.WrapCaller(err, 1)
71-
err = errors.Wrapf(err, format, args...)
72-
errMust(err)
73-
}
74-
7588
func Map(err error, fn func(err error) error) error {
7689
if err == nil {
7790
return nil
@@ -80,28 +93,18 @@ func Map(err error, fn func(err error) error) error {
8093
return errors.WrapCaller(fn(err), 1)
8194
}
8295

83-
func Inspect(err error, fn func(err error)) {
84-
if err == nil {
85-
return
86-
}
87-
88-
fn(err)
89-
}
90-
91-
func InspectLog(err error, fn func(logger *log.Event), contexts ...context.Context) {
96+
func LogCtx(ctx context.Context, err error, events ...func(e *zerolog.Event)) {
9297
if err == nil {
9398
return
9499
}
95100

96-
fn(log.Err(err, contexts...))
101+
logErr(ctx, err, events...)
97102
}
98103

99-
func LogErr(err error, contexts ...context.Context) {
104+
func Log(err error, events ...func(e *zerolog.Event)) {
100105
if err == nil {
101106
return
102107
}
103108

104-
log.Err(err, contexts...).
105-
CallerSkipFrame(1).
106-
Msg(err.Error())
109+
logErr(context.Background(), err, events...)
107110
}

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: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,44 @@
11
package errcheck
22

33
import (
4-
"fmt"
4+
"context"
5+
"runtime/debug"
6+
"sync"
57

8+
"github.com/k0kubun/pp/v3"
69
"github.com/pubgo/funk/errors"
10+
"github.com/pubgo/funk/log"
11+
"github.com/pubgo/funk/log/logfields"
12+
"github.com/rs/zerolog"
13+
"google.golang.org/protobuf/encoding/prototext"
714
)
815

9-
func errMust(err error, args ...any) {
16+
func logErr(ctx context.Context, err error, events ...func(e *zerolog.Event)) {
1017
if err == nil {
1118
return
1219
}
1320

14-
if len(args) > 0 {
15-
err = errors.Wrap(err, fmt.Sprint(args...))
16-
}
21+
log.Error(ctx).
22+
Func(func(e *zerolog.Event) {
23+
e.Str(logfields.Module, "errcheck")
24+
e.Str("stack", string(debug.Stack()))
25+
e.Str(logfields.ErrorDetail, pretty().Sprint(err))
26+
e.Str(logfields.ErrorID, errors.GetErrorId(err))
1727

18-
err = errors.WrapStack(err)
19-
errors.Debug(err)
20-
panic(err)
28+
for _, fn := range events {
29+
fn(e)
30+
}
31+
}).
32+
Str(logfields.Error, err.Error()).
33+
CallerSkipFrame(2).
34+
Msgf("%s\n%s\n", err.Error(), prototext.Format(errors.ParseErrToPb(err)))
2135
}
36+
37+
var pretty = sync.OnceValue(func() *pp.PrettyPrinter {
38+
printer := pp.New()
39+
printer.SetColoringEnabled(false)
40+
printer.SetExportedOnly(false)
41+
printer.SetOmitEmpty(true)
42+
printer.SetMaxDepth(5)
43+
return printer
44+
})

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
)

shutil/shell.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,27 @@ package shutil
22

33
import (
44
"bytes"
5+
"fmt"
56
"os"
67
"os/exec"
78
"strings"
89

9-
"github.com/pubgo/funk/log"
10+
"github.com/pubgo/funk/log/logfields"
1011
"github.com/pubgo/funk/v2/result"
12+
"github.com/rs/zerolog"
1113
)
1214

1315
func Run(args ...string) (r result.Result[string]) {
14-
defer result.RecoveryErr(&r)
16+
defer result.Recovery(&r)
1517

1618
b := bytes.NewBufferString("")
1719

1820
cmd := Shell(args...)
1921
cmd.Stdout = b
2022

21-
result.ErrOf(cmd.Run()).
22-
Inspect(func(err error) {
23-
log.Err(err).Msg("failed to execute: " + strings.Join(args, " "))
24-
}).
25-
CatchErr(&r)
26-
if r.IsErr() {
27-
return
28-
}
23+
result.ErrOf(cmd.Run()).Must(func(e *zerolog.Event) {
24+
e.Str(logfields.Msg, fmt.Sprintf("failed to execute: "+strings.Join(args, " ")))
25+
})
2926

3027
return r.WithValue(strings.TrimSpace(b.String()))
3128
}

0 commit comments

Comments
 (0)