name: Release

on:
  workflow_dispatch:

permissions:
  contents: read

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

jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    permissions:
      contents: write
      issues: write
      pull-requests: write
      id-token: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup Bun.js
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest
      - name: Cache bun dependencies
        id: bun-cache
        uses: actions/cache@v4
        with:
          path: ~/.bun/install/cache
          key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}
          restore-keys: |
            ${{ runner.os }}-bun-

      - name: Install npm dependencies (bun)
        run: bun install

      - name: Build lib
        run: bun run build

      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          NPM_CONFIG_PROVENANCE: true
          GIT_AUTHOR_NAME: ${{ github.actor }}
          GIT_AUTHOR_EMAIL: '${{ github.actor }}@users.noreply.github.com'
          GIT_COMMITTER_NAME: ${{ github.actor }}
          GIT_COMMITTER_EMAIL: '${{ github.actor }}@users.noreply.github.com'
        run: bun release
