@@ -4,13 +4,13 @@ import (
4
4
"bytes"
5
5
"fmt"
6
6
"go/format"
7
+ "slices"
7
8
8
9
"github.com/golangci/golangci-lint/pkg/config"
9
10
"github.com/golangci/golangci-lint/pkg/goformatters/gci"
10
11
"github.com/golangci/golangci-lint/pkg/goformatters/gofmt"
11
12
"github.com/golangci/golangci-lint/pkg/goformatters/gofumpt"
12
13
"github.com/golangci/golangci-lint/pkg/goformatters/goimports"
13
- "github.com/golangci/golangci-lint/pkg/lint/linter"
14
14
"github.com/golangci/golangci-lint/pkg/logutils"
15
15
)
16
16
@@ -19,24 +19,30 @@ type MetaFormatter struct {
19
19
formatters []Formatter
20
20
}
21
21
22
- func NewMetaFormatter (log logutils.Log , cfg * config.Config , enabledLinters map [string ]* linter.Config ) (* MetaFormatter , error ) {
22
+ func NewMetaFormatter (log logutils.Log , cfg * config.Formatters , runCfg * config.Run ) (* MetaFormatter , error ) {
23
+ for _ , formatter := range cfg .Enable {
24
+ if ! IsFormatter (formatter ) {
25
+ return nil , fmt .Errorf ("invalid formatter %q" , formatter )
26
+ }
27
+ }
28
+
23
29
m := & MetaFormatter {log : log }
24
30
25
- if _ , ok := enabledLinters [ gofmt .Name ]; ok {
26
- m .formatters = append (m .formatters , gofmt .New (& cfg .LintersSettings . Gofmt ))
31
+ if slices . Contains ( cfg . Enable , gofmt .Name ) {
32
+ m .formatters = append (m .formatters , gofmt .New (& cfg .Settings . GoFmt ))
27
33
}
28
34
29
- if _ , ok := enabledLinters [ gofumpt .Name ]; ok {
30
- m .formatters = append (m .formatters , gofumpt .New (& cfg .LintersSettings . Gofumpt , cfg . Run .Go ))
35
+ if slices . Contains ( cfg . Enable , gofumpt .Name ) {
36
+ m .formatters = append (m .formatters , gofumpt .New (& cfg .Settings . GoFumpt , runCfg .Go ))
31
37
}
32
38
33
- if _ , ok := enabledLinters [ goimports .Name ]; ok {
34
- m .formatters = append (m .formatters , goimports .New (& cfg .LintersSettings . Goimports ))
39
+ if slices . Contains ( cfg . Enable , goimports .Name ) {
40
+ m .formatters = append (m .formatters , goimports .New (& cfg .Settings . GoImports ))
35
41
}
36
42
37
43
// gci is a last because the only goal of gci is to handle imports.
38
- if _ , ok := enabledLinters [ gci .Name ]; ok {
39
- formatter , err := gci .New (& cfg .LintersSettings .Gci )
44
+ if slices . Contains ( cfg . Enable , gci .Name ) {
45
+ formatter , err := gci .New (& cfg .Settings .Gci )
40
46
if err != nil {
41
47
return nil , fmt .Errorf ("gci: creating formatter: %w" , err )
42
48
}
@@ -72,3 +78,7 @@ func (m *MetaFormatter) Format(filename string, src []byte) []byte {
72
78
73
79
return data
74
80
}
81
+
82
+ func IsFormatter (name string ) bool {
83
+ return slices .Contains ([]string {gofmt .Name , gofumpt .Name , goimports .Name , gci .Name }, name )
84
+ }
0 commit comments