name: dev
on:
  pull_request:
  push:
    branches:
      - master
      - main
env:
  CI: true

jobs:
  prettier:
    name: Format code
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'push' }}

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

      - name: Prettier
        uses: gulpjs/prettier_action@v3.0
        with:
          commit_message: 'chore: Run prettier'
          prettier_options: '--write .'

  test:
    name: Tests for Node ${{ matrix.node }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        node: [10, 12, 14, 16]
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
      - name: Clone repository
        uses: actions/checkout@v2

      - name: Set Node.js version
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}

      - run: node --version
      - run: npm --version

      - name: Install npm dependencies
        run: npm install

      - name: Run lint
        run: npm run lint

      - name: Run tests
        run: npm test

      - name: Coveralls
        uses: coverallsapp/github-action@v1.1.2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          flag-name: ${{matrix.os}}-node-${{ matrix.node }}
          parallel: true

  coveralls:
    needs: test
    name: Finish up

    runs-on: ubuntu-latest
    steps:
      - name: Coveralls Finished
        uses: coverallsapp/github-action@v1.1.2
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          parallel-finished: true
