name: Publish to npm

on:
  push:
    branches:
      - main
    paths:
      - 'package.json'

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 2

      - name: Check if version changed
        id: version_check
        run: |
          git diff HEAD^ HEAD -- package.json > diff.txt
          if grep -q '"version"' diff.txt; then
            echo "changed=true" >> $GITHUB_OUTPUT
          else
            echo "changed=false" >> $GITHUB_OUTPUT
          fi

      - name: Setup Node.js
        if: steps.version_check.outputs.changed == 'true'
        uses: actions/setup-node@v4
        with:
          node-version: '18'
          registry-url: 'https://registry.npmjs.org'

      - name: Publish to npm
        if: steps.version_check.outputs.changed == 'true'
        run: npm publish --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
