name: CI

on:
  push:
    tags:
      - v**
  pull_request:
    branches:
      - master

permissions:
  contents: write
  issues: write
  pull-requests: write

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install deps
        run: npm install -f

      - name: Test
        run: npm test

  # If it's triggered by a tag and the test job is successful, release the package
  release:
    runs-on: ubuntu-latest
    needs: test
    if: github.event_name == 'push' && needs.test.result == 'success'
    env:
      # Allow triggering other workflows
      GITHUB_TOKEN: ${{ secrets.PAT }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install deps
        run: npm install -f

      - name: Build
        run: |
          npm run build

      - name: Release to GitHub
        run: |
          npm run release
          # cp build/update.json update.json
          # cp build/update-beta.json update-beta.json
          # git add update.json
          # git add update-beta.json
          # git commit -m 'chore(publish): synchronizing `update.json`'
          # git push
          sleep 1s

      - name: Notify release
        uses: apexskier/github-release-commenter@v1
        continue-on-error: true
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          comment-template: |
            :rocket: _This ticket has been resolved in {release_tag}. See {release_link} for release notes._
