From 6bf30f3cd73d02b052bec35d5ce110061f3b6de2 Mon Sep 17 00:00:00 2001
From: per1234 <accounts@perglass.com>
Date: Tue, 15 Oct 2024 07:28:31 -0700
Subject: [PATCH] Use golangci-lint instead of golint

golint has been deprecated.
---
 .github/workflows/check-go-task.yml | 45 ++++-------------------------
 .golangci.yml                       |  7 +++++
 Taskfile.yml                        | 24 +++------------
 3 files changed, 17 insertions(+), 59 deletions(-)
 create mode 100644 .golangci.yml

diff --git a/.github/workflows/check-go-task.yml b/.github/workflows/check-go-task.yml
index f47fd3ed..735d8e5a 100644
--- a/.github/workflows/check-go-task.yml
+++ b/.github/workflows/check-go-task.yml
@@ -12,6 +12,7 @@ on:
     paths:
       - ".github/workflows/check-go-task.ya?ml"
       - "Taskfile.ya?ml"
+      - ".golangci.ya?ml"
       - "**/go.mod"
       - "**/go.sum"
       - "**.go"
@@ -19,6 +20,7 @@ on:
     paths:
       - ".github/workflows/check-go-task.ya?ml"
       - "Taskfile.ya?ml"
+      - ".golangci.ya?ml"
       - "**/go.mod"
       - "**/go.sum"
       - "**.go"
@@ -53,43 +55,6 @@ jobs:
 
           echo "result=$RESULT" >> $GITHUB_OUTPUT
 
-  check-errors:
-    name: check-errors (${{ matrix.module.path }})
-    needs: run-determination
-    if: needs.run-determination.outputs.result == 'true'
-    runs-on: ubuntu-latest
-    permissions:
-      contents: read
-
-    strategy:
-      fail-fast: false
-
-      matrix:
-        module:
-          - path: ./
-          - path: docsgen
-          - path: ruledocsgen
-
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v4
-
-      - name: Install Go
-        uses: actions/setup-go@v5
-        with:
-          go-version: ${{ env.GO_VERSION }}
-
-      - name: Install Task
-        uses: arduino/setup-task@v2
-        with:
-          repo-token: ${{ secrets.GITHUB_TOKEN }}
-          version: 3.x
-
-      - name: Check for errors
-        env:
-          GO_MODULE_PATH: ${{ matrix.module.path }}
-        run: task go:vet
-
   check-outdated:
     name: check-outdated (${{ matrix.module.path }})
     needs: run-determination
@@ -162,8 +127,10 @@ jobs:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
           version: 3.x
 
-      - name: Install golint
-        run: go install golang.org/x/lint/golint@latest
+      - name: Install golangci-lint
+        uses: golangci/golangci-lint-action@v3
+        with:
+          version: v1.54
 
       - name: Check style
         env:
diff --git a/.golangci.yml b/.golangci.yml
new file mode 100644
index 00000000..e51fc523
--- /dev/null
+++ b/.golangci.yml
@@ -0,0 +1,7 @@
+# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/go/.golangci.yml
+# See: https://golangci-lint.run/usage/configuration/
+issues:
+  exclude-use-default: false
+linters:
+  enable:
+    - revive
diff --git a/Taskfile.yml b/Taskfile.yml
index 40f1c1ef..26503c5c 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -56,13 +56,6 @@ tasks:
         vars:
           GO_MODULE_PATH: ./ruledocsgen
       - task: go:test-integration
-      - task: go:vet
-      - task: go:vet
-        vars:
-          GO_MODULE_PATH: ./docsgen
-      - task: go:vet
-        vars:
-          GO_MODULE_PATH: ./ruledocsgen
       - task: go:lint
       - task: go:lint
         vars:
@@ -250,14 +243,12 @@ tasks:
     dir: "{{default .DEFAULT_GO_MODULE_PATH .GO_MODULE_PATH}}"
     cmds:
       - |
-        if ! which golint &>/dev/null; then
-          echo "golint not installed or not in PATH. Please install: https://github.com/golang/lint#installation"
+        if ! which golangci-lint &>/dev/null; then
+          echo "golangci-lint not installed or not in PATH."
+          echo "Please install: https://golangci-lint.run/usage/install/#local-installation"
           exit 1
         fi
-      - |
-        golint \
-          {{default "-min_confidence 0.8 -set_exit_status" .GO_LINT_FLAGS}} \
-          {{default .DEFAULT_GO_PACKAGES .GO_PACKAGES}}
+      - golangci-lint run
 
   go:rule-docs:
     desc: Generate rules documentation
@@ -308,13 +299,6 @@ tasks:
     cmds:
       - go mod tidy -compat={{.GO_VERSION}}
 
-  # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-go-task/Taskfile.yml
-  go:vet:
-    desc: Check for errors in Go code
-    dir: "{{default .DEFAULT_GO_MODULE_PATH .GO_MODULE_PATH}}"
-    cmds:
-      - go vet {{default .DEFAULT_GO_PACKAGES .GO_PACKAGES}}
-
   # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-markdown-task/Taskfile.yml
   markdown:check-links:
     desc: Check for broken links