on:
  push:
  workflow_dispatch:

jobs:
  build:
    runs-on: "ubuntu-latest"
    steps:
      - uses: "actions/checkout@v4"
        with:
          fetch-depth: 0
      - uses: "actions/setup-python@v5"
        with:
          python-version: "3.x"
      - run: "python -m pip install --upgrade build"
      - run: "python -m build ."
      - uses: "actions/upload-artifact@v4"
        with:
          name: "python-package-distributions"
          path: "dist/"
  pytest:
    strategy:
      matrix:
        platform:
          - "macos-latest"
          - "ubuntu-latest"
          # - "windows-latest"
        python-version:
          - "3.12"
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: "actions/checkout@v4"
      - name: Install uv and set the python version
        uses: astral-sh/setup-uv@v5
        with:
          version: latest
          python-version: ${{ matrix.python-version }}
      - run: uv sync --all-extras --dev
      - run: uv run pytest
      - env:
          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
        uses: "codecov/codecov-action@v3"
  ruff:
    runs-on: "ubuntu-latest"
    steps:
      - uses: "actions/checkout@v4"
      - uses: "astral-sh/ruff-action@v1"
        with:
          args: "format --check"
          version: 0.7.3
  testpypi:
    environment:
      name: "test.pypi.org"
      url: "https://test.pypi.org/project/lbster"
    needs:
      - "build"
    permissions:
      id-token: "write"
    runs-on: "ubuntu-latest"
    steps:
      - uses: "actions/download-artifact@v4"
        with:
          name: "python-package-distributions"
          path: "dist/"
      - uses: "pypa/gh-action-pypi-publish@release/v1"
        with:
          user: __token__
          password: ${{ secrets.TEST_PYPI_API_TOKEN }}
          repository-url: "https://test.pypi.org/legacy/"
          skip-existing: true
          verbose: true
