Skip to content

Commit 22a1bd7

Browse files
committed
ci(lint): enable errorlint linter
1 parent 7d5b749 commit 22a1bd7

File tree

22 files changed

+72
-51
lines changed

22 files changed

+72
-51
lines changed

.golangci.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ linters:
1010
- errcheck
1111
- errchkjson
1212
#- errname
13+
- errorlint
1314
#- gochecknoinits
1415
- gci
1516
#- goconst

cmd/gitops-server/cmd/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ func listenAndServe(log logr.Logger, srv *http.Server, options Options) error {
368368
if options.MTLS {
369369
caCert, err := os.ReadFile(options.TLSCertFile)
370370
if err != nil {
371-
return fmt.Errorf("failed reading cert file %s. %s", options.TLSCertFile, err)
371+
return fmt.Errorf("failed reading cert file %s. %w", options.TLSCertFile, err)
372372
}
373373

374374
caCertPool := x509.NewCertPool()

core/clustersmngr/factory.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ func (cf *clustersManager) watchNamespaces(ctx context.Context) {
314314

315315
if err := wait.PollUntilContextCancel(ctx, watchNamespaceFrequency, true, func(ctx context.Context) (bool, error) {
316316
if err := cf.UpdateNamespaces(ctx); err != nil {
317-
if merr, ok := err.(*multierror.Error); ok {
317+
var merr *multierror.Error
318+
if errors.As(err, &merr) {
318319
for _, cerr := range merr.Errors {
319320
cf.log.Error(cerr, "failed to update namespaces")
320321
}
@@ -349,9 +350,11 @@ func (cf *clustersManager) updateNamespacesWithClient(ctx context.Context, creat
349350

350351
clientset, err := createClient()
351352
if err != nil {
352-
if merr, ok := err.(*multierror.Error); ok {
353+
var merr *multierror.Error
354+
if errors.As(err, &merr) {
353355
for _, err := range merr.Errors {
354-
if cerr, ok := err.(*ClientError); ok {
356+
var cerr *ClientError
357+
if errors.As(err, &cerr) {
355358
result = multierror.Append(result, fmt.Errorf("%w, cluster: %v", cerr, cerr.ClusterName))
356359
}
357360
}

core/server/fluxruntime.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,11 @@ func (cs *coreServer) ListRuntimeObjects(ctx context.Context, msg *pb.ListRuntim
8282
func listRuntimeObjectsByLabels(ctx context.Context, cs *coreServer, respErrors []*pb.ListError, labels []string) ([]*pb.ListError, []*pb.Deployment) {
8383
clustersClient, err := cs.clustersManager.GetImpersonatedClient(ctx, auth.Principal(ctx))
8484
if err != nil {
85-
if merr, ok := err.(*multierror.Error); ok {
85+
var merr *multierror.Error
86+
if errors.As(err, &merr) {
8687
for _, err := range merr.Errors {
87-
if cerr, ok := err.(*clustersmngr.ClientError); ok {
88+
var cerr *clustersmngr.ClientError
89+
if errors.As(err, &cerr) {
8890
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
8991
}
9092
}
@@ -392,7 +394,7 @@ func (cs *coreServer) GetChildObjects(ctx context.Context, msg *pb.GetChildObjec
392394
})
393395

394396
if err := clustersClient.List(ctx, msg.ClusterName, &listResult, opts); err != nil {
395-
return nil, fmt.Errorf("could not get unstructured object: %s", err)
397+
return nil, fmt.Errorf("could not get unstructured object: %w", err)
396398
}
397399

398400
respErrors := multierror.Error{}
@@ -433,13 +435,13 @@ ItemsLoop:
433435
func sanitizeSecret(obj *unstructured.Unstructured) (client.Object, error) {
434436
bytes, err := obj.MarshalJSON()
435437
if err != nil {
436-
return nil, fmt.Errorf("marshaling secret: %v", err)
438+
return nil, fmt.Errorf("marshaling secret: %w", err)
437439
}
438440

439441
s := &v1.Secret{}
440442

441443
if err := json.Unmarshal(bytes, s); err != nil {
442-
return nil, fmt.Errorf("unmarshaling secret: %v", err)
444+
return nil, fmt.Errorf("unmarshaling secret: %w", err)
443445
}
444446

445447
s.Data = map[string][]byte{"redacted": []byte(nil)}

core/server/inventory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ func getChildren(ctx context.Context, k8sClient client.Client, parentObj unstruc
354354
}
355355

356356
if err := k8sClient.List(ctx, &listResult, client.InNamespace(parentObj.GetNamespace())); err != nil {
357-
return nil, fmt.Errorf("could not get unstructured object: %s", err)
357+
return nil, fmt.Errorf("could not get unstructured object: %w", err)
358358
}
359359

360360
unstructuredChildren := []unstructured.Unstructured{}

core/server/objects.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@ func (cs *coreServer) ListObjects(ctx context.Context, msg *pb.ListObjectsReques
5858
}
5959

6060
if err != nil {
61-
if merr, ok := err.(*multierror.Error); ok {
61+
var merr *multierror.Error
62+
if errors.As(err, &merr) {
6263
for _, err := range merr.Errors {
63-
if cerr, ok := err.(*clustersmngr.ClientError); ok {
64+
var cerr *clustersmngr.ClientError
65+
if errors.As(err, &cerr) {
6466
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
6567
}
6668
}

core/server/policies.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,11 @@ func (cs *coreServer) ListPolicies(ctx context.Context, m *pb.ListPoliciesReques
151151

152152
clustersClient, err = cs.clustersManager.GetImpersonatedClient(ctx, auth.Principal(ctx))
153153
if err != nil {
154-
if merr, ok := err.(*multierror.Error); ok {
154+
var merr *multierror.Error
155+
if errors.As(err, &merr) {
155156
for _, err := range merr.Errors {
156-
if cerr, ok := err.(*clustersmngr.ClientError); ok {
157+
var cerr *clustersmngr.ClientError
158+
if errors.As(err, &cerr) {
157159
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
158160
}
159161
}

core/server/policy_violations.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@ func (cs *coreServer) ListPolicyValidations(ctx context.Context, m *pb.ListPolic
4141
}
4242

4343
if err != nil {
44-
if merr, ok := err.(*multierror.Error); ok {
44+
var merr *multierror.Error
45+
if errors.As(err, &merr) {
4546
for _, err := range merr.Errors {
46-
if cerr, ok := err.(*clustersmngr.ClientError); ok {
47+
var cerr *clustersmngr.ClientError
48+
if errors.As(err, &cerr) {
4749
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
4850
}
4951
}
@@ -62,7 +64,7 @@ func (cs *coreServer) ListPolicyValidations(ctx context.Context, m *pb.ListPolic
6264
"pac.weave.works/type": validationType,
6365
})
6466
if err != nil {
65-
return nil, fmt.Errorf("error building selector for events query: %v", err)
67+
return nil, fmt.Errorf("error building selector for events query: %w", err)
6668
}
6769

6870
fieldSelectorSet := map[string]string{
@@ -97,7 +99,7 @@ func (cs *coreServer) ListPolicyValidations(ctx context.Context, m *pb.ListPolic
9799

98100
validationsList, err := cs.listValidationsFromEvents(ctx, clustersClient, m.ClusterName, false, opts)
99101
if err != nil {
100-
return nil, fmt.Errorf("error getting events: %v", err)
102+
return nil, fmt.Errorf("error getting events: %w", err)
101103
}
102104
respErrors = append(respErrors, validationsList.Errors...)
103105
policyviolationlist := pb.ListPolicyValidationsResponse{
@@ -136,7 +138,7 @@ func (cs *coreServer) GetPolicyValidation(ctx context.Context, m *pb.GetPolicyVa
136138
"pac.weave.works/id": m.ValidationId,
137139
})
138140
if err != nil {
139-
return nil, fmt.Errorf("error building selector for events query: %v", err)
141+
return nil, fmt.Errorf("error building selector for events query: %w", err)
140142
}
141143
opts := []sigsClient.ListOption{}
142144

@@ -149,7 +151,7 @@ func (cs *coreServer) GetPolicyValidation(ctx context.Context, m *pb.GetPolicyVa
149151

150152
validationsList, err := cs.listValidationsFromEvents(ctx, clusterClient, m.ClusterName, true, opts)
151153
if err != nil {
152-
return nil, fmt.Errorf("error getting events: %v", err)
154+
return nil, fmt.Errorf("error getting events: %w", err)
153155
}
154156
if len(validationsList.Errors) > 0 {
155157
return nil, fmt.Errorf("error getting events: %s", validationsList.Errors[0].Message)
@@ -246,7 +248,7 @@ func getPolicyValidationParam(raw []byte) ([]*pb.PolicyValidationParam, error) {
246248
var paramsArr []map[string]interface{}
247249
err := json.Unmarshal(raw, &paramsArr)
248250
if err != nil {
249-
return nil, fmt.Errorf("failed to unmarshal policy validation parameter, error: %v", err)
251+
return nil, fmt.Errorf("failed to unmarshal policy validation parameter, error: %w", err)
250252
}
251253

252254
parameters := make([]*pb.PolicyValidationParam, len(paramsArr))

pkg/fluxexec/exit_errors.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ package fluxexec
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"os/exec"
78
"strings"
89
)
910

1011
func (flux *Flux) wrapExitError(ctx context.Context, err error, stderr string) error {
11-
exitErr, ok := err.(*exec.ExitError)
12-
if !ok {
12+
var exitErr *exec.ExitError
13+
if !errors.As(err, &exitErr) {
1314
// not an exit error, short circuit, nothing to wrap
1415
return err
1516
}

pkg/fluxexec/fluxexec.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func NewFlux(workingDir, execPath string) (*Flux, error) {
2323
}
2424

2525
if _, err := os.Stat(workingDir); err != nil {
26-
return nil, fmt.Errorf("error initialising Flux with workdir %s: %s", workingDir, err)
26+
return nil, fmt.Errorf("error initialising Flux with workdir %s: %w", workingDir, err)
2727
}
2828

2929
if execPath == "" {

pkg/fluxinstall/errors/errors.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package errors
22

3+
import "errors"
4+
35
type skippableErr struct {
46
Err error
57
}
@@ -13,6 +15,6 @@ func SkippableErr(err error) skippableErr {
1315
}
1416

1517
func IsErrorSkippable(err error) bool {
16-
_, ok := err.(skippableErr)
17-
return ok
18+
var skippableErr skippableErr
19+
return errors.As(err, &skippableErr)
1820
}

pkg/fluxinstall/installer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (i *Installer) Ensure(ctx context.Context, sources ...src.Source) (string,
6060
}
6161
}
6262

63-
return "", fmt.Errorf("unable to find, or install from %d sources: %s", len(sources), errs.ErrorOrNil())
63+
return "", fmt.Errorf("unable to find, or install from %d sources: %w", len(sources), errs.ErrorOrNil())
6464
}
6565

6666
func (i *Installer) Install(ctx context.Context, sources ...src.Installable) (string, error) {
@@ -86,7 +86,7 @@ func (i *Installer) Install(ctx context.Context, sources ...src.Installable) (st
8686
return execPath, nil
8787
}
8888

89-
return "", fmt.Errorf("unable install from %d sources: %s", len(sources), errs.ErrorOrNil())
89+
return "", fmt.Errorf("unable install from %d sources: %w", len(sources), errs.ErrorOrNil())
9090
}
9191

9292
func (i *Installer) Remove(ctx context.Context) error {

pkg/gitproviders/provider.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func deployKeyExists(ctx context.Context, repo gitprovider.UserRepository) (bool
8585
if errors.Is(err, gitprovider.ErrNotFound) {
8686
return false, nil
8787
} else {
88-
return false, fmt.Errorf("error getting deploy key %s: %s", DeployKeyName, err)
88+
return false, fmt.Errorf("error getting deploy key %s: %w", DeployKeyName, err)
8989
}
9090
} else {
9191
return true, nil
@@ -99,14 +99,14 @@ func uploadDeployKey(ctx context.Context, repo gitprovider.UserRepository, deplo
9999
return ErrRepositoryNoPermissionsOrDoesNotExist
100100
}
101101

102-
return fmt.Errorf("error uploading deploy key %s", err)
102+
return fmt.Errorf("error uploading deploy key %w", err)
103103
}
104104

105105
if err = utils.WaitUntil(os.Stdout, time.Second, defaultTimeout, func() error {
106106
_, err = repo.DeployKeys().Get(ctx, DeployKeyName)
107107
return err
108108
}); err != nil {
109-
return fmt.Errorf("error verifying deploy key %s: %s", DeployKeyName, err)
109+
return fmt.Errorf("error verifying deploy key %s: %w", DeployKeyName, err)
110110
}
111111

112112
return nil
@@ -163,7 +163,7 @@ func getCommits(ctx context.Context, repo gitprovider.UserRepository, targetBran
163163
return []gitprovider.Commit{}, nil
164164
}
165165

166-
return nil, fmt.Errorf("error getting commits: %s", err)
166+
return nil, fmt.Errorf("error getting commits: %w", err)
167167
}
168168

169169
return commits, nil
@@ -183,7 +183,7 @@ func GetAccountType(provider gitprovider.Client, domain, owner string) (Provider
183183
return AccountTypeUser, nil
184184
}
185185

186-
return "", fmt.Errorf("could not get account type %s", err)
186+
return "", fmt.Errorf("could not get account type %w", err)
187187
}
188188

189189
return AccountTypeOrg, nil

pkg/gitproviders/provider_org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (p orgGitProvider) RepositoryExists(ctx context.Context, repoURL RepoURL) (
3434
func (p orgGitProvider) DeployKeyExists(ctx context.Context, repoURL RepoURL) (bool, error) {
3535
orgRepo, err := p.getOrgRepo(repoURL)
3636
if err != nil {
37-
return false, fmt.Errorf("error getting org repo reference for owner %s, repo %s, %s", repoURL.Owner(), repoURL.RepositoryName(), err)
37+
return false, fmt.Errorf("error getting org repo reference for owner %s, repo %s, %w", repoURL.Owner(), repoURL.RepositoryName(), err)
3838
}
3939

4040
return deployKeyExists(ctx, orgRepo)

pkg/http/server.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package http
33
import (
44
"context"
55
"crypto/tls"
6+
"errors"
67
"fmt"
78
"log"
89
"net"
@@ -77,14 +78,14 @@ func startServer(ctx context.Context, hndlr http.Handler, listener net.Listener,
7778
logger.Printf("https://%s", srv.Addr)
7879

7980
go func() {
80-
if err := srv.Serve(listener); err != http.ErrServerClosed {
81+
if err := srv.Serve(listener); !errors.Is(err, http.ErrServerClosed) {
8182
logger.Fatalf("server quit unexpectedly: %s", err)
8283
}
8384
}()
8485
<-ctx.Done()
8586
logger.Printf("shutting down %s", listener.Addr())
8687

87-
if err := srv.Shutdown(ctx); err != nil && err != context.Canceled {
88+
if err := srv.Shutdown(ctx); err != nil && !errors.Is(err, context.Canceled) {
8889
logger.Printf("error shutting down %s: %s", listener.Addr(), err)
8990
}
9091
}

pkg/kube/kubehttp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func NewKubeHTTPClient() (*KubeHTTP, error) {
109109
func RestConfig() (*rest.Config, string, error) {
110110
config, err := InClusterConfig()
111111
if err != nil {
112-
if err == rest.ErrNotInCluster {
112+
if errors.Is(err, rest.ErrNotInCluster) {
113113
return outOfClusterConfig()
114114
}
115115
// Handle other errors

pkg/oidc/check/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func retrieveIDToken(log logger.Logger, oauth2Config oauth2.Config, verifier *oi
8888
}()
8989

9090
if err := srv.Serve(listener); err != nil {
91-
if err != http.ErrServerClosed {
91+
if !errors.Is(err, http.ErrServerClosed) {
9292
return nil, fmt.Errorf("failed starting server: %w", err)
9393
}
9494
}

pkg/run/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func GetPodFromResourceDescription(ctx context.Context, kubeClient client.Client
104104
case "service":
105105
svc := &corev1.Service{}
106106
if err := kubeClient.Get(ctx, namespacedName, svc); err != nil {
107-
return nil, fmt.Errorf("error getting service: %s, namespaced Name: %v", err, namespacedName)
107+
return nil, fmt.Errorf("error getting service: %w, namespaced Name: %v", err, namespacedName)
108108
}
109109

110110
// list pods of the service "svc" by selector in a specific namespace using the controller-runtime client
@@ -132,7 +132,7 @@ func GetPodFromResourceDescription(ctx context.Context, kubeClient client.Client
132132
case "deployment":
133133
deployment := &appsv1.Deployment{}
134134
if err := kubeClient.Get(ctx, namespacedName, deployment); err != nil {
135-
return nil, fmt.Errorf("error getting deployment: %s, namespaced Name: %v", err, namespacedName)
135+
return nil, fmt.Errorf("error getting deployment: %w, namespaced Name: %v", err, namespacedName)
136136
}
137137

138138
// list pods of the deployment "deployment" by selector in a specific namespace using the controller-runtime client

pkg/services/gitrepo/service.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package gitrepo
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"os"
78

@@ -17,7 +18,7 @@ func CommitAndPush(ctx context.Context, client git.Git, commitMsg string, logger
1718
Author: git.Author{Name: "Weave Gitops", Email: "[email protected]"},
1819
Message: commitMsg,
1920
}, filters...)
20-
if err != nil && err != git.ErrNoStagedFiles {
21+
if err != nil && !errors.Is(err, git.ErrNoStagedFiles) {
2122
return fmt.Errorf("failed to update the repository: %w", err)
2223
}
2324

pkg/testutils/testutils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,15 @@ func StartK8sTestEnvironment(crdPaths []string) (*K8sTestEnv, error) {
112112
dc, err := discovery.NewDiscoveryClientForConfig(cfg)
113113
if err != nil {
114114
ctrlCancel()
115-
return nil, fmt.Errorf("failed to initialize discovery client: %s", err)
115+
return nil, fmt.Errorf("failed to initialize discovery client: %w", err)
116116
}
117117

118118
mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(dc))
119119

120120
dyn, err := dynamic.NewForConfig(cfg)
121121
if err != nil {
122122
ctrlCancel()
123-
return nil, fmt.Errorf("failed to initialize dynamic client: %s", err)
123+
return nil, fmt.Errorf("failed to initialize dynamic client: %w", err)
124124
}
125125

126126
k8sEnv = &K8sTestEnv{

0 commit comments

Comments
 (0)