Skip to content

refactor: general cleanup and introduce stricter linting rules #409

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 40 commits into from
Mar 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
9aac231
Convert bloom filters to streamed large objects
mgdigital Mar 2, 2025
3e5da37
Handle error
mgdigital Mar 2, 2025
496897f
Linting
mgdigital Mar 2, 2025
dc71998
Remove deferrable
mgdigital Mar 2, 2025
317bc39
Check hashes length for delete
mgdigital Mar 2, 2025
7471f9e
Consistency
mgdigital Mar 2, 2025
38c050f
Check for nil filter
mgdigital Mar 2, 2025
f98029a
Remove generated code
mgdigital Mar 3, 2025
b108992
Remove generated code
mgdigital Mar 3, 2025
e8ec731
Fix migration
mgdigital Mar 3, 2025
a7fe5aa
Fix migration
mgdigital Mar 3, 2025
b72824d
WIP
Mar 22, 2025
596bf5b
WIP
Mar 22, 2025
dc47ad7
Merge branch 'main' into cleanup
Mar 23, 2025
1b6b8fe
Remove boilerplate package
mgdigital Mar 23, 2025
d0eb6fc
Revive errors fixed
mgdigital Mar 23, 2025
e0400cf
More rules
mgdigital Mar 23, 2025
b481ce1
More rules
mgdigital Mar 23, 2025
488c5de
More rules
mgdigital Mar 23, 2025
83db565
More rules
mgdigital Mar 23, 2025
95c26ff
More rules
mgdigital Mar 23, 2025
188000b
More rules
mgdigital Mar 23, 2025
0270a2c
More rules
mgdigital Mar 23, 2025
7d3d637
More rules
mgdigital Mar 23, 2025
af058de
Prettier
mgdigital Mar 23, 2025
5a27cd5
Prettier
mgdigital Mar 23, 2025
8d1812d
Disable iface
mgdigital Mar 23, 2025
c6bd366
Fix test
mgdigital Mar 23, 2025
95860f6
Disable iface
mgdigital Mar 23, 2025
e1cc3c5
Prettier
mgdigital Mar 23, 2025
4e47f30
Linting
mgdigital Mar 23, 2025
0dff69c
Linting
mgdigital Mar 23, 2025
891a493
wsl
mgdigital Mar 23, 2025
2e3c47c
More rules
mgdigital Mar 23, 2025
6f7c309
More rules
mgdigital Mar 23, 2025
eeb1bfb
More rules
mgdigital Mar 23, 2025
e557aa9
fmt
mgdigital Mar 23, 2025
b1af74a
More rules
mgdigital Mar 23, 2025
b5ce05b
gen
mgdigital Mar 23, 2025
6286d96
Update config
mgdigital Mar 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
74 changes: 74 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,77 @@
linters:
enable:
- asasalint
- asciicheck
- bidichk
- bodyclose
- canonicalheader
- contextcheck
- copyloopvar
- errchkjson
- errorlint
- goconst
- goimports
- gosmopolitan
- importas
- intrange
- musttag
- noctx
- paralleltest
- revive
- stylecheck
- testifylint
- thelper
- wsl
linters-settings:
revive:
rules:
- name: argument-limit
- name: blank-imports
- name: bool-literal-in-expr
- name: confusing-results
- name: constant-logical-expr
- name: context-as-argument
- name: context-keys-type
- name: deep-exit
- name: defer
- name: dot-imports
- name: duplicated-imports
- name: early-return
- name: empty-block
- name: empty-lines
- name: error-naming
- name: error-return
- name: error-strings
- name: errorf
- name: exported
- name: if-return
- name: identical-branches
- name: increment-decrement
- name: indent-error-flow
- name: line-length-limit
arguments:
- 120
- name: nested-structs
- name: package-comments
- name: range
- name: range-val-address
- name: range-val-in-closure
- name: receiver-naming
- name: redefines-builtin-id
- name: string-of-int
- name: struct-tag
- name: superfluous-else
- name: time-naming
- name: unconditional-recursion
- name: unexported-naming
- name: unexported-return
- name: unhandled-error
- name: unnecessary-stmt
- name: unreachable-code
- name: unused-parameter
- name: unused-receiver
- name: var-declaration
- name: var-naming
issues:
exclude-rules:
# For some reason this picks up a lot of false positives for methods on generic types:
Expand Down
4 changes: 2 additions & 2 deletions internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package app

import (
"github.com/bitmagnet-io/bitmagnet/internal/app/appfx"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/cli/hooks"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/logging/loggingfx"
"github.com/bitmagnet-io/bitmagnet/internal/app/cli/hooks"
"github.com/bitmagnet-io/bitmagnet/internal/logging/loggingfx"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
"go.uber.org/zap"
Expand Down
26 changes: 21 additions & 5 deletions internal/app/appfx/module.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
package appfx

import (
"github.com/bitmagnet-io/bitmagnet/internal/app/cli"
"github.com/bitmagnet-io/bitmagnet/internal/app/cli/args"
"github.com/bitmagnet-io/bitmagnet/internal/app/cli/hooks"
"github.com/bitmagnet-io/bitmagnet/internal/app/cmd/classifiercmd"
"github.com/bitmagnet-io/bitmagnet/internal/app/cmd/configcmd"
"github.com/bitmagnet-io/bitmagnet/internal/app/cmd/processcmd"
"github.com/bitmagnet-io/bitmagnet/internal/app/cmd/reprocesscmd"
"github.com/bitmagnet-io/bitmagnet/internal/app/cmd/workercmd"
"github.com/bitmagnet-io/bitmagnet/internal/blocking/blockingfx"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/app/boilerplateappfx"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/httpserver/httpserverfx"
"github.com/bitmagnet-io/bitmagnet/internal/classifier/classifierfx"
"github.com/bitmagnet-io/bitmagnet/internal/config/configfx"
"github.com/bitmagnet-io/bitmagnet/internal/database/databasefx"
"github.com/bitmagnet-io/bitmagnet/internal/database/migrations"
"github.com/bitmagnet-io/bitmagnet/internal/dhtcrawler/dhtcrawlerfx"
"github.com/bitmagnet-io/bitmagnet/internal/gql/gqlfx"
"github.com/bitmagnet-io/bitmagnet/internal/health/healthfx"
"github.com/bitmagnet-io/bitmagnet/internal/httpserver/httpserverfx"
"github.com/bitmagnet-io/bitmagnet/internal/importer/importerfx"
"github.com/bitmagnet-io/bitmagnet/internal/logging/loggingfx"
"github.com/bitmagnet-io/bitmagnet/internal/metrics/metricsfx"
"github.com/bitmagnet-io/bitmagnet/internal/processor/processorfx"
"github.com/bitmagnet-io/bitmagnet/internal/protocol/dht/dhtfx"
Expand All @@ -22,37 +28,47 @@ import (
"github.com/bitmagnet-io/bitmagnet/internal/telemetry/telemetryfx"
"github.com/bitmagnet-io/bitmagnet/internal/tmdb/tmdbfx"
"github.com/bitmagnet-io/bitmagnet/internal/torznab/torznabfx"
"github.com/bitmagnet-io/bitmagnet/internal/validation/validationfx"
"github.com/bitmagnet-io/bitmagnet/internal/version/versionfx"
"github.com/bitmagnet-io/bitmagnet/internal/webui"
"github.com/bitmagnet-io/bitmagnet/internal/worker/workerfx"
"go.uber.org/fx"
)

func New() fx.Option {
return fx.Module(
"app",
blockingfx.New(),
boilerplateappfx.New(),
classifierfx.New(),
configfx.New(),
dhtcrawlerfx.New(),
dhtfx.New(),
databasefx.New(),
gqlfx.New(),
healthfx.New(),
httpserverfx.New(),
importerfx.New(),
loggingfx.New(),
metainfofx.New(),
metricsfx.New(),
processorfx.New(),
queuefx.New(),
telemetryfx.New(),
tmdbfx.New(),
torznabfx.New(),
validationfx.New(),
versionfx.New(),
classifierfx.New(),
// cli commands:
workerfx.New(),
fx.Provide(
args.New,
cli.New,
hooks.New,
// cli commands:
classifiercmd.New,
configcmd.New,
reprocesscmd.New,
processcmd.New,
workercmd.New,
),
fx.Provide(webui.New),
fx.Decorate(migrations.NewDecorator),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package args

import (
"go.uber.org/fx"
"os"

"go.uber.org/fx"
)

type Result struct {
Expand Down
17 changes: 13 additions & 4 deletions internal/boilerplate/cli/cli.go → internal/app/cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package cli

import (
"context"
"sort"
"strings"

"github.com/bitmagnet-io/bitmagnet/internal/version"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
"go.uber.org/zap"
"sort"
"strings"
)

type Params struct {
Expand All @@ -29,26 +30,33 @@ func New(p Params) (Result, error) {
sort.Slice(commands, func(i, j int) bool {
return strings.Compare(commands[i].Name, commands[j].Name) < 0
})

name := "bitmagnet"

if version.GitTag != "" {
name += " " + version.GitTag
}

app := &cli.App{
Name: name,
Commands: commands,
CommandNotFound: func(_ *cli.Context, command string) {
p.Logger.Errorw("command not found", "command", command)
},
After: func(ctx *cli.Context) error {
After: func(*cli.Context) error {
return p.Shutdowner.Shutdown()
},
Version: version.GitTag,
// disabling the version flag as for some reason the After hook never gets called
HideVersion: true,
}

app.Setup()

p.Lifecycle.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
OnStart: func(context.Context) error {
// todo: Fix!
//nolint:contextcheck
go (func() {
// the following hack fixes a weird bug where the CLI does not terminate when calling with just --help
args := p.Args
Expand All @@ -62,6 +70,7 @@ func New(p Params) (Result, error) {
return nil
},
})

return Result{
App: app,
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ func New(p Params) (Result, error) {
for _, hook := range p.Hooks {
p.Lifecycle.Append(hook)
}

return Result{}, nil
}
11 changes: 8 additions & 3 deletions internal/app/cmd/classifiercmd/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ package classifiercmd
import (
"encoding/json"
"fmt"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy"
"io"

"github.com/bitmagnet-io/bitmagnet/internal/classifier"
"github.com/bitmagnet-io/bitmagnet/internal/lazy"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
"gopkg.in/yaml.v3"
"io"
)

type Params struct {
Expand Down Expand Up @@ -52,7 +53,7 @@ func New(p Params) (Result, error) {
&formatFlag,
},
Action: func(ctx *cli.Context) error {
return write(ctx.App.Writer, classifier.DefaultJsonSchema(), ctx.String("format"))
return write(ctx.App.Writer, classifier.DefaultJSONSchema(), ctx.String("format"))
},
},
},
Expand All @@ -64,6 +65,7 @@ func write(writer io.Writer, src any, format string) error {
output []byte
outputErr error
)

switch format {
case "json":
output, outputErr = json.MarshalIndent(src, "", " ")
Expand All @@ -73,9 +75,12 @@ func write(writer io.Writer, src any, format string) error {
default:
outputErr = fmt.Errorf("unsupported format: %s", format)
}

if outputErr != nil {
return outputErr
}

_, writeErr := writer.Write(output)

return writeErr
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package configcmd

import (
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/config"
"github.com/bitmagnet-io/bitmagnet/internal/config"
"github.com/jedib0t/go-pretty/v6/table"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
Expand Down Expand Up @@ -40,6 +40,7 @@ func New(p Params) (Result, error) {
},
},
}

return Result{Command: cmd}, nil
}

Expand All @@ -48,15 +49,18 @@ func appendRows(tw table.Writer, node config.ResolvedNode) {
tw.AppendSeparator()
tw.AppendRow(table.Row{node.PathString + ":", node.Type})
tw.AppendSeparator()

for _, child := range node.Children() {
appendRows(tw, child)
}

tw.AppendSeparator()
} else {
from := node.ResolverKey
if from == "" {
from = "default"
}

tw.AppendRow(table.Row{node.PathString, node.Type, node.ValueLabel, node.DefaultLabel, from})
}
}
3 changes: 2 additions & 1 deletion internal/app/cmd/processcmd/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ package processcmd

import (
"encoding/json"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy"

"github.com/bitmagnet-io/bitmagnet/internal/classifier"
"github.com/bitmagnet-io/bitmagnet/internal/lazy"
"github.com/bitmagnet-io/bitmagnet/internal/processor"
"github.com/bitmagnet-io/bitmagnet/internal/protocol"
"github.com/urfave/cli/v2"
Expand Down
7 changes: 4 additions & 3 deletions internal/app/cmd/reprocesscmd/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ package reprocesscmd

import (
"encoding/json"
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy"
"strings"
"time"

"github.com/bitmagnet-io/bitmagnet/internal/classifier"
"github.com/bitmagnet-io/bitmagnet/internal/database/dao"
"github.com/bitmagnet-io/bitmagnet/internal/lazy"
"github.com/bitmagnet-io/bitmagnet/internal/model"
"github.com/bitmagnet-io/bitmagnet/internal/processor"
"github.com/bitmagnet-io/bitmagnet/internal/processor/batch"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
"go.uber.org/zap"
"strings"
"time"
)

type Params struct {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package workercmd

import (
"github.com/bitmagnet-io/bitmagnet/internal/boilerplate/worker"
"github.com/bitmagnet-io/bitmagnet/internal/worker"
"github.com/urfave/cli/v2"
"go.uber.org/fx"
)
Expand Down Expand Up @@ -51,7 +51,7 @@ func New(p Params) (Result, error) {
},
{
Name: "list",
Action: func(ctx *cli.Context) error {
Action: func(*cli.Context) error {
for _, w := range p.Workers.Workers() {
println(w.Key())
}
Expand All @@ -60,5 +60,6 @@ func New(p Params) (Result, error) {
},
},
}

return Result{Command: cmd}, nil
}
Loading
Loading