name: 🍰 Release

on:
  push:
    tags:
      - 'v*.*.*'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: write

jobs:
  release-npm:
    if: github.repository == 'dream-num/cli'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          ref: ${{ github.ref_name }}

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9
          run_install: false

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
          registry-url: https://registry.npmjs.org

      - name: 🚚 Install dependencies and build
        run: |
          pnpm install
          pnpm build

      - name: 🐙 Publish
        run: |
          pnpm publish --access public --no-git-checks
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

  notify:
    needs: [release-npm]
    runs-on: ubuntu-latest

    steps:
      - name: Invoke deployment hook
        uses: distributhor/workflow-webhook@v3
        with:
          webhook_url: ${{ secrets.WEBHOOK_URL }}
          data: >
            {
                "type": "release",
                "version": "${{ github.ref_name }}",
                "workflow": {
                    "id": "${{ github.run_id }}"
                },
                "preview": {
                }
            }
