name: Create release

on:
  push:
    tags:
      - '*.*.*'

permissions:
  contents: write

jobs:
  tests:
    uses: ./.github/workflows/pytest.yml
  release:
    name: Release pushed tag
    needs: [tests]
    runs-on: ubuntu-22.04
    steps:
      - name: Create release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ github.ref_name }}
        run: |
          gh release create "$tag" \
              --repo="$GITHUB_REPOSITORY" \
              --title="${GITHUB_REPOSITORY#*/} ${tag#v}" \
              --generate-notes
  publish:
    name: Publish to PyPI
    needs: [tests] # require tests to pass before deploy runs
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v4
      - name: Set up Python 3.11
        uses: actions/setup-python@v5
        with:
          python-version: 3.11
      - name: Build package
        run: |
          python -m pip install -U pip build
          python -m build
      - name: Publish
        uses: pypa/gh-action-pypi-publish@v1.5.0
        with:
          user: __token__
          password: ${{ secrets.PYPI_KEY }}