name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  NPM_TOKEN: ${{ secrets.NPM_PUBLISHER_TOKEN }}
  GH_TOKEN: ${{ secrets.GH_TOKEN }}
  CI_REPO_NAME: ${{ github.repository }}
  CI_COMMIT_ID: ${{ github.sha }}

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Use newest Node version
        uses: actions/setup-node@v3
        with:
          node-version-file: '.nvmrc'
      - name: Set NPM token
        run: npm config set '//registry.npmjs.org/:_authToken' "${{ env.NPM_TOKEN }}"
      - name: npm dependencies
        run: npm install
      - name: npm test
        run: npm test

  dependabot-auto-merge:
    if: ${{ vars.DEPENDABOT_AUTO_MERGE == 'true' }}

    needs: test
    runs-on: ubuntu-latest

    permissions:
      pull-requests: write
      contents: write
    
    steps:
      - uses: fastify/github-action-merge-dependabot@v3

  deploy:
    name: deploy
    needs: [test]
    runs-on: ubuntu-latest
    if: ${{ github.ref == 'refs/heads/main' }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v3
      - name: Use newest Node version
        uses: actions/setup-node@v3
        with:
          node-version-file: '.nvmrc'
      - name: Set NPM token
        run: npm config set '//registry.npmjs.org/:_authToken' "${{ env.NPM_TOKEN }}"
      - name: npm dependencies
        run: npm install
      - name: Cache node_modules
        id: cache_node_modules
        uses: actions/cache@v3
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-lock.json') }}
      - name: Publish package
        run: CI=true npm run semantic-release
