name: Deploy package to PyPI

on:
  release:
    types: [published]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v3
        with:
          python-version: 3.11

      - name: Update version in pyproject.toml from current git tag
        run: >-
          sed -i "s/0\\.0\\.0\\.dev0/${GITHUB_REF/refs\/tags\/v/}/g" pyproject.toml

      # This makes it a touch easier/more robust to package for Debian
      # See https://github.com/uktrade/stream-zip/issues/136
      - name: Update release to include source code with version
        run: |
          touch "${GITHUB_REF_NAME}.tar.gz"
          tar --exclude='.git' --exclude='${GITHUB_REF_NAME}.tar.gz' -czvf "${GITHUB_REF_NAME}.tar.gz" .
          gh release upload "${GITHUB_REF_NAME}" "${GITHUB_REF_NAME}.tar.gz#Source code (with release version)"
          rm "${GITHUB_REF_NAME}.tar.gz"
        env:
          GH_TOKEN: ${{ github.token }}

      - run: |
          pip install build
          python -m build

      - uses: actions/upload-artifact@v3
        with:
          path: ./dist

  deploy:
    needs: [build]
    environment:
      name: pypi
      url: https://pypi.org/project/stream-zip/

    name: upload release to PyPI
    runs-on: ubuntu-latest
    permissions:
      id-token: write
    steps:
      - uses: actions/download-artifact@v3

      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          packages_dir: artifact/
