Skip to content

Commit

Permalink
ci(lint): enable errorlint linter
Browse files Browse the repository at this point in the history
  • Loading branch information
erikgb committed Jan 19, 2025
1 parent 7d5b749 commit 22a1bd7
Show file tree
Hide file tree
Showing 22 changed files with 72 additions and 51 deletions.
1 change: 1 addition & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ linters:
- errcheck
- errchkjson
#- errname
- errorlint
#- gochecknoinits
- gci
#- goconst
Expand Down
2 changes: 1 addition & 1 deletion cmd/gitops-server/cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ func listenAndServe(log logr.Logger, srv *http.Server, options Options) error {
if options.MTLS {
caCert, err := os.ReadFile(options.TLSCertFile)
if err != nil {
return fmt.Errorf("failed reading cert file %s. %s", options.TLSCertFile, err)
return fmt.Errorf("failed reading cert file %s. %w", options.TLSCertFile, err)
}

caCertPool := x509.NewCertPool()
Expand Down
9 changes: 6 additions & 3 deletions core/clustersmngr/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,8 @@ func (cf *clustersManager) watchNamespaces(ctx context.Context) {

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

clientset, err := createClient()
if err != nil {
if merr, ok := err.(*multierror.Error); ok {
var merr *multierror.Error
if errors.As(err, &merr) {
for _, err := range merr.Errors {
if cerr, ok := err.(*ClientError); ok {
var cerr *ClientError
if errors.As(err, &cerr) {
result = multierror.Append(result, fmt.Errorf("%w, cluster: %v", cerr, cerr.ClusterName))
}
}
Expand Down
12 changes: 7 additions & 5 deletions core/server/fluxruntime.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,11 @@ func (cs *coreServer) ListRuntimeObjects(ctx context.Context, msg *pb.ListRuntim
func listRuntimeObjectsByLabels(ctx context.Context, cs *coreServer, respErrors []*pb.ListError, labels []string) ([]*pb.ListError, []*pb.Deployment) {
clustersClient, err := cs.clustersManager.GetImpersonatedClient(ctx, auth.Principal(ctx))
if err != nil {
if merr, ok := err.(*multierror.Error); ok {
var merr *multierror.Error
if errors.As(err, &merr) {
for _, err := range merr.Errors {
if cerr, ok := err.(*clustersmngr.ClientError); ok {
var cerr *clustersmngr.ClientError
if errors.As(err, &cerr) {
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
}
}
Expand Down Expand Up @@ -392,7 +394,7 @@ func (cs *coreServer) GetChildObjects(ctx context.Context, msg *pb.GetChildObjec
})

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

respErrors := multierror.Error{}
Expand Down Expand Up @@ -433,13 +435,13 @@ ItemsLoop:
func sanitizeSecret(obj *unstructured.Unstructured) (client.Object, error) {
bytes, err := obj.MarshalJSON()
if err != nil {
return nil, fmt.Errorf("marshaling secret: %v", err)
return nil, fmt.Errorf("marshaling secret: %w", err)
}

s := &v1.Secret{}

if err := json.Unmarshal(bytes, s); err != nil {
return nil, fmt.Errorf("unmarshaling secret: %v", err)
return nil, fmt.Errorf("unmarshaling secret: %w", err)
}

s.Data = map[string][]byte{"redacted": []byte(nil)}
Expand Down
2 changes: 1 addition & 1 deletion core/server/inventory.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ func getChildren(ctx context.Context, k8sClient client.Client, parentObj unstruc
}

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

unstructuredChildren := []unstructured.Unstructured{}
Expand Down
6 changes: 4 additions & 2 deletions core/server/objects.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@ func (cs *coreServer) ListObjects(ctx context.Context, msg *pb.ListObjectsReques
}

if err != nil {
if merr, ok := err.(*multierror.Error); ok {
var merr *multierror.Error
if errors.As(err, &merr) {
for _, err := range merr.Errors {
if cerr, ok := err.(*clustersmngr.ClientError); ok {
var cerr *clustersmngr.ClientError
if errors.As(err, &cerr) {
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
}
}
Expand Down
6 changes: 4 additions & 2 deletions core/server/policies.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,11 @@ func (cs *coreServer) ListPolicies(ctx context.Context, m *pb.ListPoliciesReques

clustersClient, err = cs.clustersManager.GetImpersonatedClient(ctx, auth.Principal(ctx))
if err != nil {
if merr, ok := err.(*multierror.Error); ok {
var merr *multierror.Error
if errors.As(err, &merr) {
for _, err := range merr.Errors {
if cerr, ok := err.(*clustersmngr.ClientError); ok {
var cerr *clustersmngr.ClientError
if errors.As(err, &cerr) {
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
}
}
Expand Down
16 changes: 9 additions & 7 deletions core/server/policy_violations.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ func (cs *coreServer) ListPolicyValidations(ctx context.Context, m *pb.ListPolic
}

if err != nil {
if merr, ok := err.(*multierror.Error); ok {
var merr *multierror.Error
if errors.As(err, &merr) {
for _, err := range merr.Errors {
if cerr, ok := err.(*clustersmngr.ClientError); ok {
var cerr *clustersmngr.ClientError
if errors.As(err, &cerr) {
respErrors = append(respErrors, &pb.ListError{ClusterName: cerr.ClusterName, Message: cerr.Error()})
}
}
Expand All @@ -62,7 +64,7 @@ func (cs *coreServer) ListPolicyValidations(ctx context.Context, m *pb.ListPolic
"pac.weave.works/type": validationType,
})
if err != nil {
return nil, fmt.Errorf("error building selector for events query: %v", err)
return nil, fmt.Errorf("error building selector for events query: %w", err)
}

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

validationsList, err := cs.listValidationsFromEvents(ctx, clustersClient, m.ClusterName, false, opts)
if err != nil {
return nil, fmt.Errorf("error getting events: %v", err)
return nil, fmt.Errorf("error getting events: %w", err)
}
respErrors = append(respErrors, validationsList.Errors...)
policyviolationlist := pb.ListPolicyValidationsResponse{
Expand Down Expand Up @@ -136,7 +138,7 @@ func (cs *coreServer) GetPolicyValidation(ctx context.Context, m *pb.GetPolicyVa
"pac.weave.works/id": m.ValidationId,
})
if err != nil {
return nil, fmt.Errorf("error building selector for events query: %v", err)
return nil, fmt.Errorf("error building selector for events query: %w", err)
}
opts := []sigsClient.ListOption{}

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

validationsList, err := cs.listValidationsFromEvents(ctx, clusterClient, m.ClusterName, true, opts)
if err != nil {
return nil, fmt.Errorf("error getting events: %v", err)
return nil, fmt.Errorf("error getting events: %w", err)
}
if len(validationsList.Errors) > 0 {
return nil, fmt.Errorf("error getting events: %s", validationsList.Errors[0].Message)
Expand Down Expand Up @@ -246,7 +248,7 @@ func getPolicyValidationParam(raw []byte) ([]*pb.PolicyValidationParam, error) {
var paramsArr []map[string]interface{}
err := json.Unmarshal(raw, &paramsArr)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal policy validation parameter, error: %v", err)
return nil, fmt.Errorf("failed to unmarshal policy validation parameter, error: %w", err)
}

parameters := make([]*pb.PolicyValidationParam, len(paramsArr))
Expand Down
5 changes: 3 additions & 2 deletions pkg/fluxexec/exit_errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ package fluxexec

import (
"context"
"errors"
"fmt"
"os/exec"
"strings"
)

func (flux *Flux) wrapExitError(ctx context.Context, err error, stderr string) error {
exitErr, ok := err.(*exec.ExitError)
if !ok {
var exitErr *exec.ExitError
if !errors.As(err, &exitErr) {
// not an exit error, short circuit, nothing to wrap
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/fluxexec/fluxexec.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func NewFlux(workingDir, execPath string) (*Flux, error) {
}

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

if execPath == "" {
Expand Down
6 changes: 4 additions & 2 deletions pkg/fluxinstall/errors/errors.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package errors

import "errors"

type skippableErr struct {
Err error
}
Expand All @@ -13,6 +15,6 @@ func SkippableErr(err error) skippableErr {
}

func IsErrorSkippable(err error) bool {
_, ok := err.(skippableErr)
return ok
var skippableErr skippableErr
return errors.As(err, &skippableErr)
}
4 changes: 2 additions & 2 deletions pkg/fluxinstall/installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func (i *Installer) Ensure(ctx context.Context, sources ...src.Source) (string,
}
}

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

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

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

func (i *Installer) Remove(ctx context.Context) error {
Expand Down
10 changes: 5 additions & 5 deletions pkg/gitproviders/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func deployKeyExists(ctx context.Context, repo gitprovider.UserRepository) (bool
if errors.Is(err, gitprovider.ErrNotFound) {
return false, nil
} else {
return false, fmt.Errorf("error getting deploy key %s: %s", DeployKeyName, err)
return false, fmt.Errorf("error getting deploy key %s: %w", DeployKeyName, err)
}
} else {
return true, nil
Expand All @@ -99,14 +99,14 @@ func uploadDeployKey(ctx context.Context, repo gitprovider.UserRepository, deplo
return ErrRepositoryNoPermissionsOrDoesNotExist
}

return fmt.Errorf("error uploading deploy key %s", err)
return fmt.Errorf("error uploading deploy key %w", err)
}

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

return nil
Expand Down Expand Up @@ -163,7 +163,7 @@ func getCommits(ctx context.Context, repo gitprovider.UserRepository, targetBran
return []gitprovider.Commit{}, nil
}

return nil, fmt.Errorf("error getting commits: %s", err)
return nil, fmt.Errorf("error getting commits: %w", err)
}

return commits, nil
Expand All @@ -183,7 +183,7 @@ func GetAccountType(provider gitprovider.Client, domain, owner string) (Provider
return AccountTypeUser, nil
}

return "", fmt.Errorf("could not get account type %s", err)
return "", fmt.Errorf("could not get account type %w", err)
}

return AccountTypeOrg, nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/gitproviders/provider_org.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (p orgGitProvider) RepositoryExists(ctx context.Context, repoURL RepoURL) (
func (p orgGitProvider) DeployKeyExists(ctx context.Context, repoURL RepoURL) (bool, error) {
orgRepo, err := p.getOrgRepo(repoURL)
if err != nil {
return false, fmt.Errorf("error getting org repo reference for owner %s, repo %s, %s", repoURL.Owner(), repoURL.RepositoryName(), err)
return false, fmt.Errorf("error getting org repo reference for owner %s, repo %s, %w", repoURL.Owner(), repoURL.RepositoryName(), err)
}

return deployKeyExists(ctx, orgRepo)
Expand Down
5 changes: 3 additions & 2 deletions pkg/http/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package http
import (
"context"
"crypto/tls"
"errors"
"fmt"
"log"
"net"
Expand Down Expand Up @@ -77,14 +78,14 @@ func startServer(ctx context.Context, hndlr http.Handler, listener net.Listener,
logger.Printf("https://%s", srv.Addr)

go func() {
if err := srv.Serve(listener); err != http.ErrServerClosed {
if err := srv.Serve(listener); !errors.Is(err, http.ErrServerClosed) {
logger.Fatalf("server quit unexpectedly: %s", err)
}
}()
<-ctx.Done()
logger.Printf("shutting down %s", listener.Addr())

if err := srv.Shutdown(ctx); err != nil && err != context.Canceled {
if err := srv.Shutdown(ctx); err != nil && !errors.Is(err, context.Canceled) {
logger.Printf("error shutting down %s: %s", listener.Addr(), err)
}
}
2 changes: 1 addition & 1 deletion pkg/kube/kubehttp.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func NewKubeHTTPClient() (*KubeHTTP, error) {
func RestConfig() (*rest.Config, string, error) {
config, err := InClusterConfig()
if err != nil {
if err == rest.ErrNotInCluster {
if errors.Is(err, rest.ErrNotInCluster) {
return outOfClusterConfig()
}
// Handle other errors
Expand Down
2 changes: 1 addition & 1 deletion pkg/oidc/check/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func retrieveIDToken(log logger.Logger, oauth2Config oauth2.Config, verifier *oi
}()

if err := srv.Serve(listener); err != nil {
if err != http.ErrServerClosed {
if !errors.Is(err, http.ErrServerClosed) {
return nil, fmt.Errorf("failed starting server: %w", err)
}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/run/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func GetPodFromResourceDescription(ctx context.Context, kubeClient client.Client
case "service":
svc := &corev1.Service{}
if err := kubeClient.Get(ctx, namespacedName, svc); err != nil {
return nil, fmt.Errorf("error getting service: %s, namespaced Name: %v", err, namespacedName)
return nil, fmt.Errorf("error getting service: %w, namespaced Name: %v", err, namespacedName)
}

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

// list pods of the deployment "deployment" by selector in a specific namespace using the controller-runtime client
Expand Down
3 changes: 2 additions & 1 deletion pkg/services/gitrepo/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package gitrepo

import (
"context"
"errors"
"fmt"
"os"

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

Expand Down
4 changes: 2 additions & 2 deletions pkg/testutils/testutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@ func StartK8sTestEnvironment(crdPaths []string) (*K8sTestEnv, error) {
dc, err := discovery.NewDiscoveryClientForConfig(cfg)
if err != nil {
ctrlCancel()
return nil, fmt.Errorf("failed to initialize discovery client: %s", err)
return nil, fmt.Errorf("failed to initialize discovery client: %w", err)
}

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

dyn, err := dynamic.NewForConfig(cfg)
if err != nil {
ctrlCancel()
return nil, fmt.Errorf("failed to initialize dynamic client: %s", err)
return nil, fmt.Errorf("failed to initialize dynamic client: %w", err)
}

k8sEnv = &K8sTestEnv{
Expand Down
Loading

0 comments on commit 22a1bd7

Please sign in to comment.