Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/go-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ on:

jobs:
code-gen:
name: Code Generation
name: Verify code generation
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -39,7 +39,7 @@ jobs:
fi

golangci:
name: GolangCI
name: Run golangci-lint
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -49,9 +49,9 @@ jobs:
with:
go-version: "1.24.x"
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
uses: golangci/golangci-lint-action@v8
with:
version: v1.64.6
version: v2.4.0

test:
name: Test
Expand Down
91 changes: 62 additions & 29 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,69 @@
run:
timeout: 5m
version: "2"
linters:
disable-all: true
default: none
enable:
- gofmt
- unused
- gosimple
- copyloopvar
- errcheck
- gocritic
- gosec
- errcheck
- goimports
- govet
- ineffassign
- revive
- staticcheck
- govet
- stylecheck
- unconvert
- ineffassign

linters-settings:
goimports:
local-prefixes: github.com/tbe-team/raybot
staticcheck:
checks:
- all
- "-ST1003"
- "-SA4006"
- "-SA1029"
stylecheck:
checks:
- all
- "-ST1003"
- "-SA4006"
- "-ST1016"
- "-ST1005"
- unused
- sloglint
settings:
staticcheck:
checks:
- -SA1029
- -SA4006
- -ST1003
- -ST1005
- -ST1016
- all
sloglint:
no-mixed-args: true
attr-only: true
context: scope
static-msg: true
msg-style: lowercased
key-naming-case: snake
args-on-sep-lines: true
no-global: all
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- path: (.+)\.go$
text: by other packages, and that stutters; consider calling this
- path: (.+)\.go$
text: "var-naming:"
- path: (.+)\.go$
text: "receiver-naming:"
- path: (.+)\.go$
text: "unexported-return:"
- path: (.+)\.go$
text: "unused-parameter: parameter"
- path: (.+)\.go$
text: "context-keys-type: should not use basic type string"
- path: (.+)\.go$
text: error strings should not be capitalized
- linters:
- staticcheck
text: "ST1003:"
paths:
- '(.+)_test\.go'
formatters:
enable:
- gofmt
- goimports
settings:
goimports:
local-prefixes:
- github.com/tbe-team/raybot
exclusions:
generated: disable
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,4 @@ test-cov:
########################
.PHONY: lint-go
lint-go:
golangci-lint run ./... --config .golangci.yml
go run github.com/golangci/golangci-lint/v2/cmd/[email protected] run ./... --config .golangci.yml
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ require (
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2
github.com/jhump/grpctunnel v0.3.0
github.com/karalabe/hid v1.0.0
github.com/lmittmann/tint v1.1.2
github.com/mattn/go-sqlite3 v1.14.28
github.com/oapi-codegen/runtime v1.1.2
github.com/pressly/goose/v3 v3.24.3
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhR
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
github.com/lmittmann/tint v1.1.2 h1:2CQzrL6rslrsyjqLDwD11bZ5OpLBPU+g3G/r5LSfS8w=
github.com/lmittmann/tint v1.1.2/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
Expand Down
4 changes: 2 additions & 2 deletions internal/handlers/cloud/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func New(
return &Service{
opts: opts,
cfg: cfg,
log: log.With("service", "cloud"),
log: log.With(slog.String("service", "cloud")),
publisher: publisher,
subscriber: subscriber,
commandService: commandService,
Expand Down Expand Up @@ -177,7 +177,7 @@ func (s *Service) runReverseTunnel(ctx context.Context, reverseTunnelServer *grp
started, err := reverseTunnelServer.Serve(ctx)
if !started || err != nil {
serveErrChan <- struct{}{}
s.log.Error("serving reverse tunnel failed, retrying",
s.log.ErrorContext(ctx, "serving reverse tunnel failed, retrying",
slog.Bool("started", started),
slog.Int("attempts", attempts),
slog.Duration("retry_delay", retryDelay),
Expand Down
36 changes: 28 additions & 8 deletions internal/handlers/espserial/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func New(
cfg: cfg,
publisher: publisher,
client: client,
log: log.With("service", "espserial"),
log: log.With(slog.String("service", "espserial")),
cargoService: cargoService,
}

Expand Down Expand Up @@ -72,7 +72,7 @@ func (s *Service) readLoop(ctx context.Context) {
default:
msg, err := s.client.Read(ctx)
if err != nil {
s.log.Error("failed to read from serial client", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to read from serial client", slog.Any("error", err))
if errors.Is(err, espserial.ErrESPSerialNotConnected) {
s.publisher.Publish(
events.ESPSerialDisconnectedTopic,
Expand All @@ -89,35 +89,55 @@ func (s *Service) readLoop(ctx context.Context) {
}

func (s *Service) routeMessage(ctx context.Context, msg []byte) {
s.log.Debug("routing message", slog.Any("message", msg))
s.log.DebugContext(ctx, "routing message", slog.Any("message", msg))
var temp struct {
Type messageType `json:"type"`
}
if err := json.Unmarshal(msg, &temp); err != nil {
s.log.Error("failed to unmarshal message type", slog.Any("error", err), slog.Any("message", msg))
s.log.ErrorContext(ctx,
"failed to unmarshal message type",
slog.Any("message", msg),
slog.Any("error", err),
)
return
}

switch temp.Type {
case messageTypeSyncState:
var syncStateMsg syncStateMessage
if err := json.Unmarshal(msg, &syncStateMsg); err != nil {
s.log.Error("failed to unmarshal sync state message", slog.Any("error", err), slog.Any("message", msg))
s.log.ErrorContext(ctx,
"failed to unmarshal sync state message",
slog.Any("message", msg),
slog.Any("error", err),
)
return
}

if err := s.HandleSyncState(ctx, syncStateMsg); err != nil {
s.log.Error("failed to handle sync state message", slog.Any("error", err), slog.Any("message", msg))
s.log.ErrorContext(ctx,
"failed to handle sync state message",
slog.Any("message", msg),
slog.Any("error", err),
)
}

case messageTypeACK:
var ackMsg ackMessage
if err := json.Unmarshal(msg, &ackMsg); err != nil {
s.log.Error("failed to unmarshal ack message", slog.Any("error", err), slog.Any("message", msg))
s.log.ErrorContext(ctx,
"failed to unmarshal ack message",
slog.Any("message", msg),
slog.Any("error", err),
)
return
}
if err := s.HandleACK(ackMsg); err != nil {
s.log.Error("failed to handle ack message", slog.Any("error", err), slog.Any("message", msg))
s.log.ErrorContext(ctx,
"failed to handle ack message",
slog.Any("message", msg),
slog.Any("error", err),
)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions internal/handlers/event/cloud_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func (s *Service) HandleCloudConnectedEvent(ctx context.Context, _ events.CloudC
LastConnectedAt: ptr.New(time.Now()),
SetLastConnectedAt: true,
}); err != nil {
s.log.Error("failed to update cloud connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update cloud connection", slog.Any("error", err))
}
}

Expand Down Expand Up @@ -61,6 +61,6 @@ func (s *Service) HandleCloudDisconnectedEvent(ctx context.Context, event events
})

if err := g.Wait(); err != nil {
s.log.Error("failed to update cloud connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update cloud connection", slog.Any("error", err))
}
}
4 changes: 2 additions & 2 deletions internal/handlers/event/esp_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func (s *Service) HandleESPSerialConnectedEvent(ctx context.Context, _ events.ES
LastConnectedAt: ptr.New(time.Now()),
SetLastConnectedAt: true,
}); err != nil {
s.log.Error("failed to update ESP serial connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update ESP serial connection", slog.Any("error", err))
}
}

Expand All @@ -28,6 +28,6 @@ func (s *Service) HandleESPSerialDisconnectedEvent(ctx context.Context, event ev
Error: ptr.New(event.Error.Error()),
SetError: true,
}); err != nil {
s.log.Error("failed to update ESP serial connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update ESP serial connection", slog.Any("error", err))
}
}
4 changes: 2 additions & 2 deletions internal/handlers/event/pic_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func (s *Service) HandlePICSerialConnectedEvent(ctx context.Context, _ events.PI
LastConnectedAt: ptr.New(time.Now()),
SetLastConnectedAt: true,
}); err != nil {
s.log.Error("failed to update PIC serial connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update PIC serial connection", slog.Any("error", err))
}
}

Expand Down Expand Up @@ -53,6 +53,6 @@ func (s *Service) HandlePICSerialDisconnectedEvent(ctx context.Context, event ev
})

if err := g.Wait(); err != nil {
s.log.Error("failed to update cloud connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update cloud connection", slog.Any("error", err))
}
}
4 changes: 2 additions & 2 deletions internal/handlers/event/rfid_usb_event_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func (s *Service) HandleRFIDUSBConnectedEvent(ctx context.Context, _ events.RFID
LastConnectedAt: ptr.New(time.Now()),
SetLastConnectedAt: true,
}); err != nil {
s.log.Error("failed to update RFID USB connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update RFID USB connection", slog.Any("error", err))
}
}

Expand Down Expand Up @@ -53,6 +53,6 @@ func (s *Service) HandleRFIDUSBDisconnectedEvent(ctx context.Context, event even
})

if err := g.Wait(); err != nil {
s.log.Error("failed to update cloud connection", slog.Any("error", err))
s.log.ErrorContext(ctx, "failed to update cloud connection", slog.Any("error", err))
}
}
18 changes: 9 additions & 9 deletions internal/handlers/event/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func New(
systemService system.Service,
) *Service {
return &Service{
log: log.With("service", "event"),
log: log.With(slog.String("service", "event")),
subscriber: subscriber,
appStateService: appStateService,
commandService: commandService,
Expand All @@ -58,7 +58,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.CloudConnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -72,7 +72,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.CloudDisconnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -86,7 +86,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.ESPSerialConnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -100,7 +100,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.ESPSerialDisconnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -114,7 +114,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.PICSerialConnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -128,7 +128,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.PICSerialDisconnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -142,7 +142,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.RFIDUSBConnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand All @@ -156,7 +156,7 @@ func (s *Service) registerHandlers(ctx context.Context) {
func(msg *eventbus.Message) {
ev, ok := msg.Payload.(events.RFIDUSBDisconnectedEvent)
if !ok {
s.log.Error("received invalid event", slog.Any("event", msg.Payload))
s.log.ErrorContext(ctx, "received invalid event", slog.Any("event", msg.Payload))
return
}

Expand Down
Loading
Loading