name: Publish release

on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: fregante/setup-git-user@v2

      - uses: pnpm/action-setup@v2
        # uses version from "packageManager" field in package.json

      - name: Setup Node.js v18
        uses: actions/setup-node@v3
        with:
          cache: pnpm
          node-version: 18.x

      - name: Install Packages
        run: |
          pnpm install --frozen-lockfile
          npm i json --global
        env:
          CYPRESS_CACHE_FOLDER: .cache/Cypress

      - name: Prepare release
        run: |
          VERSION=${GITHUB_REF:10}
          echo "Preparing release $VERSION"
          git checkout -t origin/release/$VERSION
          npm version --no-git-tag-version --allow-same-version $VERSION
          git add package.json
          git commit -nm "Bump version $VERSION"
          git checkout -t origin/master
          git merge -m "Release $VERSION" --no-ff release/$VERSION
          git push --no-verify

      - name: Publish
        run: |
          npm set //registry.npmjs.org/:_authToken $NPM_TOKEN
          npm publish
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
