# This workflow will build and (if release) publish Python distributions to PyPI
# For more information see:
#   - https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
#   - https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
#

---
name: build-publish

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
  release:
    types: [published]

jobs:
  build-wheels:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.x'
      - name: Install pypa/build
        run: >-
          python -m
          pip install -U
          build
      - name: Build a binary wheel and a source tarball
        run: >-
          python -m
          build
          --sdist
          --wheel
          --outdir dist/
          .
      - name: Store wheels
        uses: actions/upload-artifact@v3
        with:
          path: dist

  publish:
    runs-on: ubuntu-latest
    needs:
      - build-wheels
    if: github.event_name == 'release' && github.event.action == 'published'
    steps:
      - name: Download dists
        uses: actions/download-artifact@v3
        with:
          name: artifact
          path: dist
      - name: Publish
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          password: ${{ secrets.PYPI_API_TOKEN }}
