name: Publish packages and crates
on:
  push:
    branches:
      - main

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
  call-rust-build:
    uses: ./.github/workflows/build.yaml

  release:
    name: Release
    needs: [call-rust-build]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v3

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

      # batch download artifacts
      - uses: actions/download-artifact@v3
        with:
          path: /tmp/artifacts
      - name: Move Artifacts
        run: |
          for abi in linux-x64-gnu linux-x64-musl darwin-x64 win32-x64-msvc linux-arm64-musl linux-arm64-gnu darwin-arm64 win32-ia32-msvc win32-arm64-msvc
          do
            mv /tmp/artifacts/${{ github.sha }}-${abi}-plugin/* ./npm/${abi}

            test -f ./npm/${abi}/index.farm
          done

      - name: Install Dependencies
        run: npm install -g pnpm@9.1.0 && pnpm i --frozen-lockfile

      - name: Publish to npm
        run: npm set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }} && npm publish