# This workflow will upload a Python Package to PyPI when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries

name: Upload Python Package

on:
  release:
    types: [published]

permissions:
  contents: read

jobs:
  release-build:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v4
      
      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"
      
      - name: Install build dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install build wheel setuptools
      
      - name: Build release distributions
        run: |
          python -m build
      
      - name: Upload distributions
        uses: actions/upload-artifact@v4
        with:
          name: release-dists
          path: dist/

  pypi-publish:
    runs-on: ubuntu-latest
    needs:
      - release-build
    
    permissions:
      # IMPORTANT: this permission is mandatory for trusted publishing
      id-token: write
    
    # Dedicated environment with protections for publishing
    environment:
      name: pypi
      url: https://pypi.org/project/autotrend/${{ github.event.release.name }}
    
    steps:
      - name: Retrieve release distributions
        uses: actions/download-artifact@v4
        with:
          name: release-dists
          path: dist/
      
      - name: Publish release distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          packages-dir: dist/
