Skip to content

Commit 4a3d7af

Browse files
committed
Remove logrus in-favor of log/slog
1 parent bd76527 commit 4a3d7af

File tree

9 files changed

+54
-57
lines changed

9 files changed

+54
-57
lines changed

.golangci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ linters-settings:
192192
# - "all": report all global loggers
193193
# - "default": report only the default slog logger
194194
# Default: ""
195-
no-global: "all"
195+
no-global: ""
196196
# Enforce using methods that accept a context.
197197
# Values:
198198
# - "": disabled

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ integration-test-client: build ## Generates the typescript client code used by e
5555
-I ../ \
5656
--grpc-gateway-ts_out ./test/integration/defaultConfig \
5757
--grpc-gateway-ts_opt logtostderr=true \
58-
--grpc-gateway-ts_opt loglevel=debug \
58+
--grpc-gateway-ts_opt loglevel=info \
5959
--grpc-gateway-ts_opt use_proto_names=false \
6060
--grpc-gateway-ts_opt emit_unpopulated=false \
6161
--grpc-gateway-ts_opt enable_styling_check=true \
@@ -67,7 +67,7 @@ integration-test-client: build ## Generates the typescript client code used by e
6767
-I ../ \
6868
--grpc-gateway-ts_out ./test/integration/useProtoNames \
6969
--grpc-gateway-ts_opt logtostderr=true \
70-
--grpc-gateway-ts_opt loglevel=debug \
70+
--grpc-gateway-ts_opt loglevel=info \
7171
--grpc-gateway-ts_opt use_proto_names=true \
7272
--grpc-gateway-ts_opt emit_unpopulated=false \
7373
--grpc-gateway-ts_opt enable_styling_check=true \
@@ -79,7 +79,7 @@ integration-test-client: build ## Generates the typescript client code used by e
7979
-I ../ \
8080
--grpc-gateway-ts_out ./test/integration/emitUnpopulated \
8181
--grpc-gateway-ts_opt logtostderr=true \
82-
--grpc-gateway-ts_opt loglevel=debug \
82+
--grpc-gateway-ts_opt loglevel=info \
8383
--grpc-gateway-ts_opt use_proto_names=false \
8484
--grpc-gateway-ts_opt emit_unpopulated=true \
8585
--grpc-gateway-ts_opt enable_styling_check=true \
@@ -91,7 +91,7 @@ integration-test-client: build ## Generates the typescript client code used by e
9191
-I ../ \
9292
--grpc-gateway-ts_out ./test/integration/noStaticClasses \
9393
--grpc-gateway-ts_opt logtostderr=true \
94-
--grpc-gateway-ts_opt loglevel=debug \
94+
--grpc-gateway-ts_opt loglevel=info \
9595
--grpc-gateway-ts_opt use_proto_names=false \
9696
--grpc-gateway-ts_opt emit_unpopulated=false \
9797
--grpc-gateway-ts_opt enable_styling_check=true \

generator/generator.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package generator
33
import (
44
"bytes"
55
"fmt"
6+
"log/slog"
67
"path/filepath"
78
"strings"
89
"text/template"
910

10-
log "github.com/sirupsen/logrus" //nolint: depguard // Need to remove
1111
"google.golang.org/protobuf/types/pluginpb"
1212

1313
"github.com/dpup/protoc-gen-grpc-gateway-ts/registry"
@@ -37,17 +37,17 @@ func (t *TypeScriptGRPCGatewayGenerator) Generate(
3737
return nil, errors.Wrap(err, "error analysing proto files")
3838
}
3939
tmpl := ServiceTemplate(t.Registry)
40-
log.Debugf("files to generate %v", req.GetFileToGenerate())
40+
slog.Debug("generating files", slog.Any("files", req.GetFileToGenerate()))
4141

4242
requiresFetchModule := false
4343
// feed fileData into rendering process
4444
for _, fileData := range filesData {
4545
if !t.Registry.IsFileToGenerate(fileData.Name) {
46-
log.Debugf("file %s is not the file to generate, skipping", fileData.Name)
46+
slog.Debug("file is not the file to generate, skipping", slog.String("fileName", fileData.Name))
4747
continue
4848
}
4949

50-
log.Debugf("generating file for %s", fileData.TSFileName)
50+
slog.Debug("generating file", slog.String("fileName", fileData.TSFileName))
5151
data := &TemplateData{
5252
File: fileData,
5353
EnableStylingCheck: t.Registry.EnableStylingCheck,
@@ -63,7 +63,7 @@ func (t *TypeScriptGRPCGatewayGenerator) Generate(
6363

6464
if requiresFetchModule {
6565
fetchTmpl := FetchModuleTemplate()
66-
log.Debugf("generate fetch template")
66+
slog.Debug("generate fetch template")
6767
generatedFetch, err := t.generateFetchModule(fetchTmpl)
6868
if err != nil {
6969
return nil, errors.Wrap(err, "error generating fetch module")

generator/template.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ package generator
33
import (
44
"bytes"
55
"fmt"
6+
"log/slog"
67
"net/url"
78
"regexp"
89
"strings"
910
"text/template"
1011

11-
log "github.com/sirupsen/logrus"
12-
1312
"github.com/Masterminds/sprig"
1413

1514
"github.com/dpup/protoc-gen-grpc-gateway-ts/data"
@@ -86,7 +85,7 @@ func renderURL(r *registry.Registry) func(method data.Method) string {
8685
matches := reg.FindAllStringSubmatch(methodURL, -1)
8786
fieldsInPath := make([]string, 0, len(matches))
8887
if len(matches) > 0 {
89-
log.Debugf("url matches %v", matches)
88+
slog.Debug("url matches", slog.Any("matches", matches))
9089
for _, m := range matches {
9190
expToReplace := m[0]
9291
fieldName := fieldNameFn(m[1])

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ go 1.22
44

55
require (
66
github.com/Masterminds/sprig v2.22.0+incompatible
7-
github.com/golang/protobuf v1.5.4
87
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1
98
github.com/iancoleman/strcase v0.3.0
109
github.com/pkg/errors v0.9.1
11-
github.com/sirupsen/logrus v1.9.3
1210
github.com/stretchr/testify v1.9.0
1311
google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be
1412
google.golang.org/grpc v1.63.2

go.sum

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF0
55
github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
66
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
77
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
8-
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
98
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
109
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
11-
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
12-
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
1310
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
1411
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
1512
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -36,17 +33,12 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
3633
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3734
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
3835
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
39-
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
40-
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
41-
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
42-
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
4336
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
4437
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
4538
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
4639
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
4740
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
4841
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
49-
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5042
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
5143
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
5244
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
@@ -64,6 +56,5 @@ google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHh
6456
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
6557
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
6658
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
67-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
6859
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
6960
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

main.go

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"flag"
55
"fmt"
66
"io"
7+
"log/slog"
78
"os"
89
"strings"
910

1011
"github.com/dpup/protoc-gen-grpc-gateway-ts/generator"
1112
"github.com/dpup/protoc-gen-grpc-gateway-ts/registry"
12-
log "github.com/sirupsen/logrus" //nolint: depguard // need to remove
1313
"google.golang.org/protobuf/proto"
1414
"google.golang.org/protobuf/types/pluginpb"
1515
)
@@ -73,7 +73,7 @@ func run() error {
7373
return fmt.Errorf("error instantiating a new generator: %w", err)
7474
}
7575

76-
log.Debug("Starts generating file request")
76+
slog.Debug("Starts generating file request")
7777

7878
resp, err := g.Generate(req)
7979
if err != nil {
@@ -85,27 +85,33 @@ func run() error {
8585

8686
encodeResponse(resp)
8787

88-
log.Debug("generation finished")
88+
slog.Debug("generation finished")
8989

9090
return nil
9191
}
9292

9393
func configureLogging(enableLogging bool, levelStr string) error {
9494
if enableLogging {
95-
log.SetFormatter(&log.TextFormatter{
96-
DisableTimestamp: true,
97-
})
98-
log.SetOutput(os.Stderr)
99-
log.Debugf("Logging configured completed, logging has been enabled")
95+
level := slog.LevelInfo
10096
if levelStr != "" {
101-
level, err := log.ParseLevel(levelStr)
102-
if err != nil {
103-
return fmt.Errorf("error parsing log level %s: %w", levelStr, err)
97+
switch levelStr {
98+
case "debug":
99+
level = slog.LevelDebug
100+
case "info":
101+
level = slog.LevelInfo
102+
case "warn":
103+
level = slog.LevelWarn
104+
case "error":
105+
level = slog.LevelError
106+
default:
107+
return fmt.Errorf("invalid log level %s", levelStr)
104108
}
105-
log.SetLevel(level)
106-
} else {
107-
log.SetLevel(log.InfoLevel)
108109
}
110+
opts := &slog.HandlerOptions{Level: level}
111+
logger := slog.New(slog.NewTextHandler(os.Stderr, opts))
112+
slog.SetDefault(logger)
113+
} else {
114+
slog.SetDefault(slog.New(slog.NewTextHandler(io.Discard, nil)))
109115
}
110116
return nil
111117
}

registry/file.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package registry
22

33
import (
4+
"fmt"
5+
"log/slog"
46
"path/filepath"
57
"strings"
68

79
"github.com/dpup/protoc-gen-grpc-gateway-ts/data"
810
"github.com/dpup/protoc-gen-grpc-gateway-ts/options"
911
"github.com/pkg/errors"
10-
log "github.com/sirupsen/logrus" //nolint: depguard // Need to remove
1112
"google.golang.org/protobuf/proto"
1213
"google.golang.org/protobuf/types/descriptorpb"
1314
)
1415

1516
func (r *Registry) analyseFile(f *descriptorpb.FileDescriptorProto) (*data.File, error) {
16-
log.Debugf("analysing %s", f.GetName())
17+
slog.Debug("analysing file", slog.String("filename", f.GetName()))
1718
fileData := data.NewFile()
1819
fileName := f.GetName()
1920
packageName := f.GetPackage()
@@ -52,7 +53,7 @@ func (r *Registry) analyseFile(f *descriptorpb.FileDescriptorProto) (*data.File,
5253

5354
func (r *Registry) addFetchModuleDependencies(fileData *data.File) error {
5455
if !fileData.Services.RequiresFetchModule() {
55-
log.Debugf("no services found for %s, skipping fetch module", fileData.Name)
56+
slog.Debug("no services found for, skipping fetch module", slog.String("name", fileData.Name))
5657
return nil
5758
}
5859

@@ -75,7 +76,7 @@ func (r *Registry) addFetchModuleDependencies(fileData *data.File) error {
7576
return errors.Wrapf(err, "error replacing source file with alias for %s", fileName)
7677
}
7778

78-
log.Debugf("added fetch dependency %s for %s", sourceFile, fileData.TSFileName)
79+
slog.Debug("added fetch dependency %s for %s", sourceFile, fileData.TSFileName)
7980
fileData.AddDependency(&data.Dependency{
8081
ModuleIdentifier: "fm",
8182
SourceFile: sourceFile,
@@ -92,16 +93,17 @@ func (r *Registry) analyseFilePackageTypeDependencies(fileData *data.File) {
9293
// also need to change the type's IsExternal information for rendering purpose
9394
typeInfo := t.GetType()
9495
fqTypeName := typeInfo.Type
95-
log.Debugf("checking whether non scala type %s in the same message is external to the current file", fqTypeName)
96+
slog.Debug("checking whether non scala type in the same message is external to the current file",
97+
slog.Any("type", fqTypeName))
9698

9799
registryType, foundInRegistry := r.Types[fqTypeName]
98100
if !foundInRegistry || registryType.File != fileData.Name {
99101
// this means the type from same package in file has yet to be analysed (means in different file)
100102
// or the type has appeared in another file different to the current file
101103
// in this case we will put the type as external in the fileData
102104
// and also mutate the IsExternal field of the given type:w
103-
log.Debugf("type %s is external to file %s, mutating the external dependencies information",
104-
fqTypeName, fileData.Name)
105+
slog.Debug(fmt.Sprintf("type %s is external to file %s, mutating the external dependencies information",
106+
fqTypeName, fileData.Name))
105107

106108
fileData.ExternalDependingTypes = append(fileData.ExternalDependingTypes, fqTypeName)
107109
t.SetExternal(true)

registry/registry.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package registry
22

33
import (
4+
"fmt"
5+
"log/slog"
46
"os"
57
"path"
68
"path/filepath"
79
"strings"
810

911
"github.com/dpup/protoc-gen-grpc-gateway-ts/data"
1012
"github.com/pkg/errors"
11-
log "github.com/sirupsen/logrus" //nolint: depguard // not sure, will remove
1213
"google.golang.org/protobuf/types/descriptorpb"
1314
"google.golang.org/protobuf/types/pluginpb"
1415
)
@@ -65,14 +66,14 @@ type Registry struct {
6566
// NewRegistry initialise the registry and return the instance.
6667
func NewRegistry(opts Options) (*Registry, error) {
6768
tsImportRoots, tsImportRootAliases, err := getTSImportRootInformation(opts)
68-
log.Debugf("found ts import roots %v", tsImportRoots)
69-
log.Debugf("found ts import root aliases %v", tsImportRootAliases)
69+
slog.Debug("found ts import roots", slog.Any("importRoots", tsImportRoots))
70+
slog.Debug("found ts import root aliases", slog.Any("importRootAliases", tsImportRootAliases))
7071
if err != nil {
7172
return nil, errors.Wrap(err, "error getting common import root information")
7273
}
7374

74-
log.Debugf("found fetch module directory %s", opts.FetchModuleDirectory)
75-
log.Debugf("found fetch module name %s", opts.FetchModuleFilename)
75+
slog.Debug("found fetch module directory", slog.String("moduleDir", opts.FetchModuleDirectory))
76+
slog.Debug("found fetch module name", slog.String("moduleName", opts.FetchModuleFilename))
7677

7778
return &Registry{
7879
Options: opts,
@@ -161,7 +162,7 @@ func (r *Registry) Analyse(req *pluginpb.CodeGeneratorRequest) (map[string]*data
161162
}
162163

163164
files := req.GetProtoFile()
164-
log.Debugf("about to start anaylyse files, %d in total", len(files))
165+
slog.Debug("about to start anaylyse files", slog.Int("count", len(files)))
165166
data := make(map[string]*data.File)
166167
// analyse all files in the request first
167168
for _, f := range files {
@@ -258,9 +259,9 @@ func (r *Registry) getSourceFileForImport(source, target, root, alias string) (s
258259
}
259260

260261
ret = strings.ReplaceAll(absTarget, absRoot, alias)
261-
log.Debugf("replacing root alias %s for %s, result: %s", alias, target, ret)
262+
slog.Debug(fmt.Sprintf("replacing root alias %s for %s, result: %s", alias, target, ret))
262263
} else { // return relative path here
263-
log.Debugf("no root alias found, trying to get the relative path for %s", target)
264+
slog.Debug("no root alias found, trying to get the relative path", slog.String("target", target))
264265
absSource, err := filepath.Abs(source)
265266
if err != nil {
266267
return "", errors.Wrapf(err, "error looking up absolute directory with base dir: %s", source)
@@ -272,14 +273,14 @@ func (r *Registry) getSourceFileForImport(source, target, root, alias string) (s
272273
}
273274

274275
slashPath := filepath.ToSlash(ret)
275-
log.Debugf("got relative path %s for %s", target, slashPath)
276+
slog.Debug(fmt.Sprintf("got relative path %s for %s", target, slashPath))
276277

277278
// sub directory will not have relative path ./, if this happens, prepend one
278279
if !strings.HasPrefix(slashPath, "../") {
279280
ret = filepath.FromSlash("./" + slashPath)
280281
}
281282

282-
log.Debugf("no root alias found, trying to get the relative path for %s, result: %s", target, ret)
283+
slog.Debug(fmt.Sprintf("no root alias found, trying to get the relative path for %s, result: %s", target, ret))
283284
}
284285

285286
// remove .ts suffix if there's any
@@ -293,7 +294,7 @@ func (r *Registry) getSourceFileForImport(source, target, root, alias string) (s
293294

294295
func (r *Registry) collectExternalDependenciesFromData(filesData map[string]*data.File) error {
295296
for _, fileData := range filesData {
296-
log.Debugf("collecting dependencies information for %s", fileData.TSFileName)
297+
slog.Debug("collecting dependencies information", slog.String("fileName", fileData.TSFileName))
297298
// dependency group up the dependency by package+file
298299
dependencies := make(map[string]*data.Dependency)
299300
for _, typeName := range fileData.ExternalDependingTypes {
@@ -318,7 +319,7 @@ func (r *Registry) collectExternalDependenciesFromData(filesData map[string]*dat
318319
target := data.GetTSFileName(typeInfo.File)
319320
var sourceFile string
320321
if pkg, ok := r.TSPackages[target]; ok {
321-
log.Debugf("package import override %s has been found for file %s", pkg, target)
322+
slog.Debug("package import override has been found", slog.String("pkg", pkg), slog.String("target", target))
322323
sourceFile = pkg
323324
} else {
324325
foundAtRoot, alias, err := r.findRootAliasForPath(func(absRoot string) (bool, error) {

0 commit comments

Comments
 (0)