#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
name: golangci-lint

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
      - v1.6.0
    type: [review_requested, ready_for_review]

jobs:
  changes:
    runs-on: ubuntu-latest
    outputs:
      docs: ${{ steps.filter.outputs.docs }}
      go: ${{ steps.filter.outputs.go }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          submodules: recursive

      - uses: ./.github/actions/paths-filter
        id: filter
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          filters: |
            docs:
              - 'docs/**/*'
              - '*.md'
            go:
              - '*.go'
              - '**/*.go'
              - 'go.mod'
              - 'go.sum'
              - 'Makefile'
              - 'Dockerfile'
              - 'test/e2e/**/*'
              - 'conf/**'
              - 'utils/**'
              - ".github/**"
  golangci:
    name: lint
    needs: changes
    if: |
      (needs.changes.outputs.go == 'true')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Go Env
        uses: actions/setup-go@v3
        with:
          go-version: '1.19'

      - name: Download golangci-lint
        run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.49.0

      - name: 🛩️ golangci-lint
        run: $(go env GOPATH)/bin/golangci-lint run --tests=false --timeout 300s ./...
