name: CI

on:
  push:
    branches: [master, develop]
  pull_request:
    branches: [master]
  workflow_dispatch:
    inputs:
      force_run:
        description: 'Force workflow run'
        required: true
        type: choice
        options: [yes, no]

permissions:
  actions: read
  contents: read
  statuses: write

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  Go:
    name: Go
    runs-on: ubuntu-latest

    strategy:
      matrix:
        go: [ '1.18.x', '1.19.x', '1.20.x' ]

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go }}

      - name: Download dependencies
        run: make deps

      - name: Download Verdana font
        run: curl -L -o 'Verdana.ttf' 'https://github.com/matomo-org/travis-scripts/raw/master/fonts/Verdana.ttf'

      - name: Run tests
        run: go test -v -covermode count -coverprofile cover.out ./...

      - name: Send coverage data
        uses: essentialkaos/goveralls-action@v2
        env:
          COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          profile: cover.out
          parallel: true
          flag-name: linux-${{ matrix.go }}

  SendCoverage:
    name: Send Coverage
    runs-on: ubuntu-latest

    needs: Go

    steps:
      - name: Finish parallel tests
        uses: essentialkaos/goveralls-action@v2
        env:
          COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          parallel-finished: true

  Aligo:
    name: Aligo
    runs-on: ubuntu-latest

    needs: Go

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: '1.19.x'

      - name: Download dependencies
        run: make deps

      - name: Check Golang sources with Aligo
        uses: essentialkaos/aligo-action@v2
        with:
          files: ./...
