name: "Tests"
on:
  pull_request:
  push:
    branches:
      - master

permissions:
  contents: read

jobs:
  Test:
    if: "!contains(github.event.head_commit.message, '[skip ci]')"
    strategy:
      matrix:
        # lowest verison here should also be in `engines` field
        node_version: [12, 'lts/*', 'node']
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install Node
        uses: dcodeIO/setup-node-nvm@master
        with:
          node-version: ${{ matrix.node_version }}
      - name: Install Dependencies
        run: npm ci
      - name: Run Unit Tests 👩🏽‍💻
        run: npm run test:unit
      - name: Run Spec Tests 👩🏽‍💻
        run: npm run test:specs

  Lint:
    if: "!contains(github.event.head_commit.message, '[skip ci]')"
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install Dependencies
        run: npm ci
      - name: Lint ✨
        run: npm run test:lint

  Release:
    permissions:
      contents: write
    needs: [Test, Lint]
    if: |
      github.ref == 'refs/heads/master' &&
      github.event.repository.fork == false
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install Node
        uses: dcodeIO/setup-node-nvm@master
        with:
          node-version: 'lts/*'
      - name: Install Dependencies
        run: npm ci
      - name: Build 🗜️
        run: |
          npm run build
          if ! git diff --quiet; then
            git config --global user.email "<>"
            git config --global user.name "MarkedJS bot"
            git commit -am "🗜️ build [skip ci]"
          fi
      - name: Release 🎉
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: npx semantic-release

  Skip:
    permissions:
      contents: none
    if: contains(github.event.head_commit.message, '[skip ci]')
    runs-on: ubuntu-latest
    steps:
      - name: Skip CI 🚫
        run: echo skip ci
