From 2963c6794257e7d21c13497f87db5df64586e681 Mon Sep 17 00:00:00 2001 From: Ali Behjati Date: Tue, 26 Sep 2023 14:15:33 +0200 Subject: [PATCH] refactor: improve code clarity and add fmt and lint ci --- .github/workflows/ci-lint-and-format.yaml | 21 +++++++++++++++ .../workflows/{ci.yaml => push-image.yaml} | 0 .pre-commit-config.yaml | 6 +++++ main.go | 10 +++++-- serve.go | 27 +++++++++---------- 5 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/ci-lint-and-format.yaml rename .github/workflows/{ci.yaml => push-image.yaml} (100%) create mode 100644 .pre-commit-config.yaml diff --git a/.github/workflows/ci-lint-and-format.yaml b/.github/workflows/ci-lint-and-format.yaml new file mode 100644 index 0000000..38b4fd1 --- /dev/null +++ b/.github/workflows/ci-lint-and-format.yaml @@ -0,0 +1,21 @@ +name: Lint and Format + +on: + pull_request: + push: + branches: [main] + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - uses: actions/setup-go@v4 + with: + go-version: '1.19' + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.54 + - uses: pre-commit/action@v2.0.3 diff --git a/.github/workflows/ci.yaml b/.github/workflows/push-image.yaml similarity index 100% rename from .github/workflows/ci.yaml rename to .github/workflows/push-image.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..1d1e0a6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,6 @@ +repos: + - repo: https://github.com/dnephin/pre-commit-golang + rev: v0.5.1 + hooks: + - id: go-fmt + - id: golangci-lint diff --git a/main.go b/main.go index b8605e6..991fe72 100644 --- a/main.go +++ b/main.go @@ -67,13 +67,19 @@ func main() { go func() { log.Info().Str("url", cli.MetricsURL).Msg("Starting metrics server") http.Handle("/metrics", promhttp.Handler()) - http.ListenAndServe(cli.MetricsURL, nil) + err := http.ListenAndServe(cli.MetricsURL, nil) + if err != nil { + log.Panic().Err(err).Msg("Failed to start metrics server") + } }() go func() { log.Info().Str("url", cli.HeartbeatURL).Msg("Starting heartbeat server") http.HandleFunc("/", heartbeat.Handle) - http.ListenAndServe(cli.HeartbeatURL, nil) + err := http.ListenAndServe(cli.HeartbeatURL, nil) + if err != nil { + log.Panic().Err(err).Msg("Failed to start heartbeat server") + } }() log.Info().Msg("Starting receive/write/serve goroutines") diff --git a/serve.go b/serve.go index 4baafbd..e8d9c2e 100644 --- a/serve.go +++ b/serve.go @@ -29,21 +29,18 @@ type server struct { func (s server) SubscribeSignedVAA(req *spyv1.SubscribeSignedVAARequest, server spyv1.SpyRPCService_SubscribeSignedVAAServer) error { var fi []filterSignedVaa - if req.Filters != nil { - for _, f := range req.Filters { - switch t := f.Filter.(type) { - case *spyv1.FilterEntry_EmitterFilter: - addr, err := vaa.StringToAddress(t.EmitterFilter.EmitterAddress) - if err != nil { - return status.Error(codes.InvalidArgument, fmt.Sprintf("failed to decode emitter address: %v", err)) - } - fi = append(fi, filterSignedVaa{ - chainId: vaa.ChainID(t.EmitterFilter.ChainId), - emitterAddr: addr, - }) - default: - return status.Error(codes.InvalidArgument, "unsupported filter type") + for _, f := range req.Filters { + if t, ok := f.Filter.(*spyv1.FilterEntry_EmitterFilter); ok { + addr, err := vaa.StringToAddress(t.EmitterFilter.EmitterAddress) + if err != nil { + return status.Error(codes.InvalidArgument, fmt.Sprintf("failed to decode emitter address: %v", err)) } + fi = append(fi, filterSignedVaa{ + chainId: vaa.ChainID(t.EmitterFilter.ChainId), + emitterAddr: addr, + }) + } else { + return status.Error(codes.InvalidArgument, "unsupported filter type") } } @@ -93,7 +90,7 @@ func (s server) SubscribeSignedVAA(req *spyv1.SubscribeSignedVAARequest, server } // Check if the VAA matches any of the filters - var found bool = false + found := false for _, f := range fi { if f.chainId == vaaMsg.EmitterChain && f.emitterAddr == vaaMsg.EmitterAddress { found = true