Skip to content

Commit 0184df8

Browse files
Mizarotsaikd
authored andcommitted
Added Pre-commit and Makefile
precommit and makefile for setup pre-commit run --all-files Readme and cyclo 30 No lint pre-commit run --all-files fix many of go-critic comments Adding workflow matrix and setup go go 1.18> go 1.18> oss update golanci instead of pre-commit golangci fixes Hard to fix fast linters are out Config that can work for current code Updated Makefile Removed Makefile
1 parent aed1915 commit 0184df8

File tree

127 files changed

+633
-461
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+633
-461
lines changed

.golangci.yaml

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
linters-settings:
2+
dupl:
3+
threshold: 100
4+
goconst:
5+
min-len: 2
6+
min-occurrences: 1
7+
gocritic:
8+
enabled-tags:
9+
- diagnostic
10+
- experimental
11+
- opinionated
12+
- performance
13+
- style
14+
disabled-checks:
15+
- dupImport # https://github.com/go-critic/go-critic/issues/845
16+
- ifElseChain
17+
gocyclo:
18+
min-complexity: 30 # Recommended between 10-20
19+
gofmt:
20+
rewrite-rules:
21+
- pattern: 'interface{}'
22+
replacement: 'any'
23+
goimports:
24+
local-prefixes: github.com/tsaikd/gogstash
25+
gomnd:
26+
# don't include the "operation" and "assign"
27+
checks:
28+
- argument
29+
- case
30+
- condition
31+
- return
32+
ignored-numbers:
33+
- '0'
34+
- '1'
35+
- '2'
36+
- '3'
37+
ignored-functions:
38+
- strings.SplitN
39+
40+
lll:
41+
line-length: 110
42+
misspell:
43+
locale: US
44+
nolintlint:
45+
allow-unused: false # report any unused nolint directives
46+
require-specific: false # don't require nolint directives to be specific about which linter is being skipped
47+
revive:
48+
rules:
49+
- name: unexported-return
50+
disabled: true
51+
- name: unused-parameter
52+
53+
linters:
54+
disable-all: true
55+
enable:
56+
#- bodyclose
57+
- dogsled
58+
#- dupl
59+
- errcheck
60+
- exportloopref
61+
#- gochecknoinits
62+
#- goconst
63+
#- gocritic
64+
- gocyclo
65+
- gofmt
66+
- goimports
67+
#- gomnd
68+
- goprintffuncname
69+
#- gosec
70+
- gosimple
71+
- govet
72+
- ineffassign
73+
#- lll
74+
- misspell
75+
#- nakedret
76+
#- noctx
77+
- nolintlint
78+
#- revive
79+
- staticcheck
80+
#- stylecheck
81+
- typecheck
82+
#- unconvert
83+
#- unparam
84+
- unused
85+
- whitespace
86+
87+
run:
88+
timeout: 5m

.pre-commit-config.yaml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
repos:
2+
- repo: https://github.com/dnephin/pre-commit-golang
3+
rev: v0.5.1
4+
hooks:
5+
- id: validate-toml
6+
- id: golangci-lint
7+
args: ["--fix"]
8+
- id: go-build
9+
- id: go-mod-tidy

README.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,11 @@ See [output modules](output) for more information
276276
* [report](output/report)
277277
* [socket](output/socket)
278278
* [stdout](output/stdout)
279-
* [loki](output/loki)
279+
* [loki](output/loki)
280+
281+
## Development
282+
283+
To setup the local machine, run `make setup` to install all tools for pre-commit.
284+
285+
If any of the installations fail or the pre-commit cannot find the go tools, ensure they are accessable though adding their's `bin` folder to your path.
286+

cmd/gogstash.go

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/sirupsen/logrus"
99
"github.com/tsaikd/KDGoLib/futil"
10+
1011
"github.com/tsaikd/gogstash/config"
1112
"github.com/tsaikd/gogstash/config/goglog"
1213

cmd/worker_unix.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build !windows
12
// +build !windows
23

34
package cmd
@@ -7,8 +8,9 @@ import (
78
"os"
89
"syscall"
910

10-
"github.com/tsaikd/gogstash/config/goglog"
1111
"golang.org/x/sync/errgroup"
12+
13+
"github.com/tsaikd/gogstash/config/goglog"
1214
)
1315

1416
func startWorker(args []string, attr *syscall.ProcAttr) (pid int, err error) {

cmd/worker_windows.go

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build windows
12
// +build windows
23

34
package cmd

codec/azureeventhubjson/codecazureeventhubjson.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"time"
66

77
jsoniter "github.com/json-iterator/go"
8+
89
"github.com/tsaikd/gogstash/config"
910
"github.com/tsaikd/gogstash/config/goglog"
1011
"github.com/tsaikd/gogstash/config/logevent"
@@ -33,11 +34,10 @@ func InitHandler(context.Context, config.ConfigRaw) (config.TypeCodecConfig, err
3334
}
3435

3536
// Decode returns an event from 'data' as JSON format, adding provided 'eventExtra'
36-
func (c *Codec) Decode(ctx context.Context, data interface{},
37-
eventExtra map[string]interface{}, tags []string,
37+
func (c *Codec) Decode(ctx context.Context, data any,
38+
eventExtra map[string]any, tags []string,
3839
msgChan chan<- logevent.LogEvent) (ok bool, err error) {
39-
40-
clonedEventExtras := make(map[string]interface{}, len(eventExtra))
40+
clonedEventExtras := make(map[string]any, len(eventExtra))
4141
for k, v := range eventExtra {
4242
clonedEventExtras[k] = v
4343
}
@@ -53,7 +53,7 @@ func (c *Codec) Decode(ctx context.Context, data interface{},
5353
err = c.DecodeEvent([]byte(v), &event)
5454
case []byte:
5555
err = c.DecodeEvent(v, &event)
56-
case map[string]interface{}:
56+
case map[string]any:
5757
if event.Extra != nil {
5858
for k, val := range v {
5959
event.Extra[k] = val
@@ -71,7 +71,7 @@ func (c *Codec) Decode(ctx context.Context, data interface{},
7171
}
7272

7373
if records, rok := event.Extra["records"]; rok && len(event.Message) == 0 {
74-
for _, record := range records.([]interface{}) {
74+
for _, record := range records.([]any) {
7575
if _, err = c.Decode(ctx, record, eventExtra, tags, msgChan); err != nil {
7676
event.AddTag(ErrorTag)
7777
goglog.Logger.Error(err)
@@ -114,7 +114,6 @@ func (c *Codec) DecodeEvent(data []byte, event *logevent.LogEvent) (err error) {
114114

115115
// Encode encodes the event to a JSON encoded message
116116
func (c *Codec) Encode(_ context.Context, event logevent.LogEvent, dataChan chan<- []byte) (ok bool, err error) {
117-
118117
output, err := event.MarshalJSON()
119118
if err != nil {
120119
return false, err

codec/azureeventhubjson/codecazureeventhubjson_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/sirupsen/logrus"
99
"github.com/stretchr/testify/assert"
1010
"github.com/stretchr/testify/require"
11+
1112
"github.com/tsaikd/gogstash/config/goglog"
1213
"github.com/tsaikd/gogstash/config/logevent"
1314
)
@@ -34,7 +35,7 @@ func TestDecode(t *testing.T) {
3435
assert.True(ok)
3536
require.Len(msgChan, 1)
3637
event := <-msgChan
37-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
38+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
3839
assert.Equal("", event.Message)
3940

4041
// string should be ok
@@ -43,16 +44,16 @@ func TestDecode(t *testing.T) {
4344
assert.True(ok)
4445
require.Len(msgChan, 1)
4546
event = <-msgChan
46-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
47+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
4748
assert.Equal("", event.Message)
4849

4950
// map[string]interface{} should be ok
50-
ok, err = codec.Decode(ctx, map[string]interface{}{"foo": "bar"}, nil, emptyTags, msgChan)
51+
ok, err = codec.Decode(ctx, map[string]any{"foo": "bar"}, nil, emptyTags, msgChan)
5152
require.NoError(err)
5253
assert.True(ok)
5354
require.Len(msgChan, 1)
5455
event = <-msgChan
55-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
56+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
5657
assert.Equal("", event.Message)
5758

5859
// ok will be true, as message sent
@@ -90,15 +91,15 @@ func TestDecode(t *testing.T) {
9091
assert.Equal([]string{"foo", "bar"}, event.Tags)
9192

9293
// merge & override extra
93-
ok, err = codec.Decode(ctx, []byte(`{"foo":"bar2"}`), map[string]interface{}{
94+
ok, err = codec.Decode(ctx, []byte(`{"foo":"bar2"}`), map[string]any{
9495
"foo": "bar",
9596
"one": "more thing",
9697
}, emptyTags, msgChan)
9798
require.NoError(err)
9899
assert.True(ok)
99100
require.Len(msgChan, 1)
100101
event = <-msgChan
101-
assert.Equal(map[string]interface{}{
102+
assert.Equal(map[string]any{
102103
"foo": "bar2",
103104
"one": "more thing",
104105
}, event.Extra)
@@ -112,5 +113,4 @@ func TestDecode(t *testing.T) {
112113
assert.Equal("hello1", event.Message)
113114
event = <-msgChan
114115
assert.Equal("hello2", event.Message)
115-
116116
}

codec/json/codecjson.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"time"
66

77
jsoniter "github.com/json-iterator/go"
8+
89
"github.com/tsaikd/gogstash/config"
910
"github.com/tsaikd/gogstash/config/goglog"
1011
"github.com/tsaikd/gogstash/config/logevent"
@@ -33,10 +34,9 @@ func InitHandler(context.Context, config.ConfigRaw) (config.TypeCodecConfig, err
3334
}
3435

3536
// Decode returns an event from 'data' as JSON format, adding provided 'eventExtra'
36-
func (c *Codec) Decode(ctx context.Context, data interface{},
37-
eventExtra map[string]interface{}, tags []string,
37+
func (c *Codec) Decode(ctx context.Context, data any,
38+
eventExtra map[string]any, tags []string,
3839
msgChan chan<- logevent.LogEvent) (ok bool, err error) {
39-
4040
event := logevent.LogEvent{
4141
Timestamp: time.Now(),
4242
Extra: eventExtra,
@@ -48,7 +48,7 @@ func (c *Codec) Decode(ctx context.Context, data interface{},
4848
err = c.DecodeEvent([]byte(v), &event)
4949
case []byte:
5050
err = c.DecodeEvent(v, &event)
51-
case map[string]interface{}:
51+
case map[string]any:
5252
if event.Extra != nil {
5353
for k, val := range v {
5454
event.Extra[k] = val

codec/json/codecjson_test.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/sirupsen/logrus"
99
"github.com/stretchr/testify/assert"
1010
"github.com/stretchr/testify/require"
11+
1112
"github.com/tsaikd/gogstash/config/goglog"
1213
"github.com/tsaikd/gogstash/config/logevent"
1314
)
@@ -34,7 +35,7 @@ func TestDecode(t *testing.T) {
3435
assert.True(ok)
3536
require.Len(msgChan, 1)
3637
event := <-msgChan
37-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
38+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
3839
assert.Equal("", event.Message)
3940

4041
// string should be ok
@@ -43,16 +44,16 @@ func TestDecode(t *testing.T) {
4344
assert.True(ok)
4445
require.Len(msgChan, 1)
4546
event = <-msgChan
46-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
47+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
4748
assert.Equal("", event.Message)
4849

4950
// map[string]interface{} should be ok
50-
ok, err = codec.Decode(ctx, map[string]interface{}{"foo": "bar"}, nil, emptyTags, msgChan)
51+
ok, err = codec.Decode(ctx, map[string]any{"foo": "bar"}, nil, emptyTags, msgChan)
5152
require.NoError(err)
5253
assert.True(ok)
5354
require.Len(msgChan, 1)
5455
event = <-msgChan
55-
assert.Equal(map[string]interface{}{"foo": "bar"}, event.Extra)
56+
assert.Equal(map[string]any{"foo": "bar"}, event.Extra)
5657
assert.Equal("", event.Message)
5758

5859
// ok will be true, as message sent
@@ -90,15 +91,15 @@ func TestDecode(t *testing.T) {
9091
assert.Equal([]string{"foo", "bar"}, event.Tags)
9192

9293
// merge & override extra
93-
ok, err = codec.Decode(ctx, []byte(`{"foo":"bar2"}`), map[string]interface{}{
94+
ok, err = codec.Decode(ctx, []byte(`{"foo":"bar2"}`), map[string]any{
9495
"foo": "bar",
9596
"one": "more thing",
9697
}, emptyTags, msgChan)
9798
require.NoError(err)
9899
assert.True(ok)
99100
require.Len(msgChan, 1)
100101
event = <-msgChan
101-
assert.Equal(map[string]interface{}{
102+
assert.Equal(map[string]any{
102103
"foo": "bar2",
103104
"one": "more thing",
104105
}, event.Extra)

config/codec.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"github.com/tsaikd/KDGoLib/errutil"
9+
910
"github.com/tsaikd/gogstash/config/goglog"
1011
"github.com/tsaikd/gogstash/config/logevent"
1112
)
@@ -24,7 +25,7 @@ type TypeCodecConfig interface {
2425
// Decode - The codec’s decode method is where data coming in from an input is transformed into an event.
2526
// 'ok' returns a boolean indicating if an event was created and sent to a provided 'msgChan' channel
2627
// 'error' is returned in case of any failure handling input 'data', but 'ok' == false DOES NOT indicate an error
27-
Decode(ctx context.Context, data interface{}, extra map[string]interface{}, tags []string, msgChan chan<- logevent.LogEvent) (ok bool, err error)
28+
Decode(ctx context.Context, data any, extra map[string]any, tags []string, msgChan chan<- logevent.LogEvent) (ok bool, err error)
2829
// DecodeEvent decodes 'data' to 'event' pointer, creating new current timestamp if IsZero
2930
// 'error' is returned in case of any failure handling input 'data'
3031
DecodeEvent(data []byte, event *logevent.LogEvent) error
@@ -53,23 +54,23 @@ func RegistCodecHandler(name string, handler CodecHandler) {
5354
mapCodecHandler[name] = handler
5455
}
5556

56-
func GetCodecOrDefault(ctx context.Context, raw interface{}) (TypeCodecConfig, error) {
57+
func GetCodecOrDefault(ctx context.Context, raw any) (TypeCodecConfig, error) {
5758
return GetCodec(ctx, raw, DefaultCodecName)
5859
}
5960

6061
// GetCodec returns a codec based on the 'codec' configuration from provided 'ConfigRaw' input
6162
// defaults to 'defaultType'
6263
func GetCodec(
6364
ctx context.Context,
64-
raw interface{},
65+
raw any,
6566
defaultType string,
6667
) (codec TypeCodecConfig, err error) {
6768
switch cfg := raw.(type) {
6869
case ConfigRaw:
6970
if codecConfig, ok := cfg["codec"]; ok {
7071
return GetCodec(ctx, codecConfig, defaultType)
7172
}
72-
case map[string]interface{}:
73+
case map[string]any:
7374
if codecConfig, ok := cfg["codec"]; ok {
7475
return GetCodec(ctx, codecConfig, defaultType)
7576
}
@@ -136,11 +137,10 @@ func DefaultCodecInitHandler(context.Context, ConfigRaw) (TypeCodecConfig, error
136137
}
137138

138139
// Decode returns an event based on current timestamp and converting 'data' to 'string', adding provided 'eventExtra'
139-
func (c *DefaultCodec) Decode(ctx context.Context, data interface{},
140-
eventExtra map[string]interface{},
140+
func (c *DefaultCodec) Decode(ctx context.Context, data any,
141+
eventExtra map[string]any,
141142
tags []string,
142143
msgChan chan<- logevent.LogEvent) (ok bool, err error) {
143-
144144
event := logevent.LogEvent{
145145
Timestamp: time.Now(),
146146
Extra: eventExtra,

0 commit comments

Comments
 (0)