name: validate
on:
  push:
    branches:
      - '+([0-9])?(.{+([0-9]),x}).x'
      - 'main'
      - 'next'
      - 'next-major'
      - 'beta'
      - 'alpha'
      - '!all-contributors/**'
  pull_request: {}
jobs:
  main:
    # ignore all-contributors PRs
    if: ${{ !contains(github.head_ref, 'all-contributors') }}
    strategy:
      matrix:
        node: [14, 16, 18, 20]
    runs-on: ubuntu-latest
    steps:
      - name: ⬇️ Checkout repo
        uses: actions/checkout@v2

      - name: ⎔ Setup node
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}

      - name: 📥 Download deps
        uses: bahmutov/npm-install@v1
        with:
          useLockFile: false

      - name: ▶️ Run validate script
        run: npm run validate
        env:
          FORCE_COLOR: true

      - name: ⬆️ Upload coverage report
        uses: codecov/codecov-action@v1

  release:
    needs: main
    runs-on: ubuntu-latest
    if:
      ${{ github.repository == 'testing-library/jest-dom' &&
      contains('refs/heads/main,refs/heads/beta,refs/heads/next,refs/heads/alpha',
      github.ref) && github.event_name == 'push' }}
    steps:
      - name: ⬇️ Checkout repo
        uses: actions/checkout@v2

      - name: ⎔ Setup node
        uses: actions/setup-node@v2
        with:
          node-version: 14

      - name: 📥 Download deps
        uses: bahmutov/npm-install@v1
        with:
          useLockFile: false

      - name: 🏗 Run build script
        run: npm run build

      - name: 🚀 Release
        uses: cycjimmy/semantic-release-action@v2
        with:
          semantic_version: 17
          branches: |
            [
              '+([0-9])?(.{+([0-9]),x}).x',
              'main',
              'next',
              'next-major',
              {name: 'beta', prerelease: true},
              {name: 'alpha', prerelease: true}
            ]
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}