Skip to content

Commit a51400c

Browse files
committed
build: Add initial golangci-lint configuration
Signed-off-by: Paulo Gomes <[email protected]>
1 parent b38fe28 commit a51400c

File tree

14 files changed

+154
-31
lines changed

14 files changed

+154
-31
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ jobs:
3131
go-version: ${{ matrix.go-version }}
3232

3333
- run: make build
34+
35+
- name: Validate
36+
run: make validate

.golangci.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
version: "2"
2+
run:
3+
concurrency: 3
4+
linters:
5+
default: all
6+
disable:
7+
- depguard
8+
- gochecknoglobals
9+
- exhaustruct
10+
- err113
11+
- gochecknoinits
12+
- ireturn
13+
- mnd
14+
- varnamelen
15+
- godoclint
16+
- noctx
17+
- noinlineerr
18+
- nestif
19+
- gosec
20+
- funlen
21+
- cyclop
22+
- gocritic
23+
- revive
24+
- wrapcheck
25+
- wsl
26+
exclusions:
27+
generated: lax
28+
presets:
29+
- comments
30+
- common-false-positives
31+
- legacy
32+
- std-error-handling
33+
formatters:
34+
enable:
35+
- gci
36+
- gofmt
37+
- gofumpt
38+
- goimports
39+
exclusions:
40+
generated: lax

Makefile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
# renovate: datasource=github-tags depName=golangci/golangci-lint
2+
GOLANGCI_VERSION ?= v2.6.1
3+
TOOLS_BIN := $(shell mkdir -p build/tools && realpath build/tools)
4+
5+
GOLANGCI = $(TOOLS_BIN)/golangci-lint-$(GOLANGCI_VERSION)
6+
$(GOLANGCI):
7+
rm -f $(TOOLS_BIN)/golangci-lint*
8+
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_VERSION)/install.sh | sh -s -- -b $(TOOLS_BIN) $(GOLANGCI_VERSION)
9+
mv $(TOOLS_BIN)/golangci-lint $(TOOLS_BIN)/golangci-lint-$(GOLANGCI_VERSION)
10+
111
.PHONY: build
212
build:
313
go build -o build/ ./...
14+
15+
validate: validate-lint validate-dirty
16+
17+
validate-lint: $(GOLANGCI)
18+
$(GOLANGCI) run
19+
20+
validate-dirty:
21+
ifneq ($(shell git status --porcelain --untracked-files=no),)
22+
@echo worktree is dirty
23+
@git --no-pager status
24+
@git --no-pager diff
25+
@exit 1
26+
endif

cmd/gogit-http-server/logging.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,19 @@ import (
99

1010
type logWriter struct {
1111
http.ResponseWriter
12+
1213
code, bytes int
1314
}
1415

1516
func (r *logWriter) Write(p []byte) (int, error) {
1617
written, err := r.ResponseWriter.Write(p)
1718
r.bytes += written
19+
1820
return written, err
1921
}
2022

2123
// Note this is generally only called when sending an HTTP error, so it's
22-
// important to set the `code` value to 200 as a default
24+
// important to set the `code` value to 200 as a default.
2325
func (r *logWriter) WriteHeader(code int) {
2426
r.code = code
2527
r.ResponseWriter.WriteHeader(code)

cmd/gogit-http-server/main.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,14 @@ var rootCmd = &cobra.Command{
4545
if err := http.ListenAndServe(addr, handler); !errors.Is(err, http.ErrServerClosed) {
4646
return err
4747
}
48+
4849
return nil
4950
},
5051
}
5152

5253
func main() {
53-
if err := rootCmd.Execute(); err != nil {
54+
err := rootCmd.Execute()
55+
if err != nil {
5456
log.Fatal(err)
5557
}
5658
}

cmd/gogit/clone.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ var cloneCmd = &cobra.Command{
6060
opts.Progress = cmd.OutOrStdout()
6161
}
6262

63-
fmt.Fprintf(cmd.ErrOrStderr(), "Cloning into '%s'...\n", dir) //nolint:errcheck
63+
fmt.Fprintf(cmd.ErrOrStderr(), "Cloning into '%s'...\n", dir)
6464

6565
_, err = git.PlainClone(dir, &opts)
66+
6667
return err
6768
},
6869
DisableFlagsInUseLine: true,

cmd/gogit/daemon.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ var daemonCmd = &cobra.Command{
4848
}
4949

5050
log.Printf("Starting Git daemon on %q", addr)
51+
5152
return srv.ListenAndServe()
5253
},
5354
}
@@ -62,17 +63,20 @@ var _ transport.Loader = (*dirsLoader)(nil)
6263

6364
// NewDirsLoader creates a new dirsLoader with the given directories.
6465
func NewDirsLoader(dirs []string, strict, exportAll bool) *dirsLoader {
65-
var loaders []transport.Loader
66-
var fss []billy.Filesystem
66+
loaders := make([]transport.Loader, 0, len(dirs))
67+
fss := make([]billy.Filesystem, 0, len(dirs))
68+
6769
for _, dir := range dirs {
6870
abs, err := filepath.Abs(dir)
6971
if err != nil {
7072
continue
7173
}
74+
7275
fs := osfs.New(abs, osfs.WithBoundOS())
7376
fss = append(fss, fs)
7477
loaders = append(loaders, transport.NewFilesystemLoader(fs, strict))
7578
}
79+
7680
return &dirsLoader{loaders: loaders, fss: fss, exportAll: exportAll}
7781
}
7882

@@ -87,16 +91,18 @@ func (d *dirsLoader) Load(ep *transport.Endpoint) (storage.Storer, error) {
8791
// repository.
8892
dfs := d.fss[i]
8993
okFile := filepath.Join(ep.Path, "git-daemon-export-ok")
94+
9095
stat, err := dfs.Lstat(okFile)
9196
if err != nil || (stat != nil && !stat.Mode().IsRegular()) {
9297
// If the file does not exist or is a directory,
9398
// we skip this repository.
9499
continue
95100
}
96-
97101
}
102+
98103
return storer, nil
99104
}
100105
}
106+
101107
return nil, transport.ErrRepositoryNotFound
102108
}

cmd/gogit/fetch.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func init() {
2727
var fetchCmd = &cobra.Command{
2828
Use: "fetch [<options>] [--] [<repository> [<refspec>...]]",
2929
Short: "Download objects and refs from another repository",
30-
RunE: func(cmd *cobra.Command, args []string) error {
30+
RunE: func(cmd *cobra.Command, _ []string) error {
3131
r, err := git.PlainOpen(".")
3232
if err != nil {
3333
return err

cmd/gogit/main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,26 @@ var envToTarget = map[string]trace.Target{
3434
func init() {
3535
// Set up tracing
3636
var target trace.Target
37+
3738
for k, v := range envToTarget {
3839
if ok, _ := strconv.ParseBool(os.Getenv(k)); ok {
3940
target |= v
4041
}
4142
}
43+
4244
trace.SetTarget(target)
4345
}
4446

4547
func main() {
46-
if err := rootCmd.Execute(); err != nil {
48+
err := rootCmd.Execute()
49+
if err != nil {
4750
var rerr *transport.RemoteError
4851
if errors.As(err, &rerr) {
4952
fmt.Fprintln(os.Stderr, rerr)
5053
} else {
5154
fmt.Fprintln(os.Stderr, err)
5255
}
56+
5357
os.Exit(1)
5458
}
5559
}

cmd/gogit/pull.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ var pullCmd = &cobra.Command{
5050
switch {
5151
case errors.Is(err, git.NoErrAlreadyUpToDate):
5252
cmd.Println("Already up-to-date.")
53+
5354
return nil
5455
default:
5556
return err

0 commit comments

Comments
 (0)