name: Build Utilities

on:
  push:
    branches: ['main']
  pull_request:

defaults:
  run:
    shell: bash -l {0}

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  versioning:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Install dependencies
        run: |
          python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" hatch
          jlpm
          jlpm run build

      - name: Configure git identity to commit
        run: |
          git config --global user.email "you@example.com"
          git config --global user.name "Your Name"

      - name: Reset version
        run: |
          hatch version 9.8.7
          jlpm run lerna version 9.8.7 --no-push --force-publish --no-git-tag-version --yes
          git commit -am "Release 9.8.7"

      - name: Patch Release
        run: |
          jlpm release:patch --force

      - name: Minor Release
        run: |
          jlpm release:bump minor --force

      - name: Release Cycle
        run: |
          # beta
          jlpm release:bump release --force
          # rc
          jlpm release:bump release --force
          # final
          jlpm release:bump release --force

      - name: Major Release
        run: |
          jlpm release:bump major --force

  npm:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          architecture: 'x64'

      - name: Install dependencies
        run: |
          python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" pip
          jlpm
          jlpm run build
