name: Release

on:
  push:
    branches:
      - main

permissions:
  contents: read

jobs:
  release:
    # prevent this action from running on forks
    if: github.repository == 'cferdinandi/kelp'
    permissions:
      contents: write
      pull-requests: read
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20.x'
          registry-url: 'https://registry.npmjs.org'
      - name: Install dependencies
        run: npm ci
      - name: Extract version from package.json
        uses: sergeysova/jq-action@v2
        id: version
        with:
          cmd: 'jq .version package.json -r'
      - name: Get latest tag
        uses: actions-ecosystem/action-get-latest-tag@v1
        id: get-latest-tag
      - name: Publish GitHub Release
        uses: release-drafter/release-drafter@v6
        if: ${{ contains(steps.get-latest-tag.outputs.tag, steps.version.outputs.value) == false }}
        with:
          version: ${{ steps.version.outputs.value }}
          publish: true
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
      - name: Publish to NPM
        if: ${{ contains(steps.get-latest-tag.outputs.tag, steps.version.outputs.value) == false }}
        run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}