name: Build wheels

on: [push, pull_request, workflow_dispatch]

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  build_wheels:
    name: py${{ matrix.python-version }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        # cibuildwheel builds linux wheels inside a manylinux container
        # it also takes care of procuring the correct python version for us
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: [38, 39, 310, 311]

    steps:
      - uses: actions/checkout@v3

      - uses: pypa/cibuildwheel@v2.11.3
        env:
          CIBW_BUILD: "cp${{ matrix.python-version}}-*"

      - uses: actions/upload-artifact@v3
        with:
          name: dist
          path: ./wheelhouse/*.whl

  build_sdist:
    name: sdist
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        name: Install Python
        with:
          python-version: "3.9"
      - name: Run check-manifest
        run: |
          pip install check-manifest
          check-manifest -v
      - name: Build sdist
        run: |
          pip install --upgrade build
          python -m build --sdist
      - uses: actions/upload-artifact@v3
        with:
          name: dist
          path: ./dist/*.tar.gz