name: Auto Bump & Publish

on:
  push:
    branches:
      - main
  workflow_dispatch:

# Blocca le esecuzioni parallele: le nuove run vengono messe in coda
concurrency:
  group: auto-bump-${{ github.ref }}
  cancel-in-progress: false

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout main branch
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          token: ${{ secrets.GH_PAT }}
          ref: main

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'

      - name: Configure npm auth
        run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc

      - name: Bump version for publish
        id: bump_publish
        run: |
          npm version patch --no-git-tag-version
          NEW_VERSION=$(node -p "require('./package.json').version")
          echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT

      - name: Commit version bump
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add package.json
          if git diff --cached --quiet; then
            echo "No version bump to commit."
          else
            git commit -m "chore(release): bump version to ${{ steps.bump_publish.outputs.new_version }}"
            git push origin main
          fi

      - name: Publish package
        run: |
          npm publish --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}