name: deploy

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Release version'
        required: true
        default: '1.2.3'

jobs:

  package:
    runs-on: ubuntu-latest
    env:
      SETUPTOOLS_SCM_PRETEND_VERSION: ${{ github.event.inputs.version }}

    steps:
    - uses: actions/checkout@v4

    - name: Build and Check Package
      uses: hynek/build-and-inspect-python-package@v2.2

  deploy:
    needs: package
    runs-on: ubuntu-latest
    environment: deploy
    permissions:
      id-token: write  # For PyPI trusted publishers.
      contents: write  # For tag.

    steps:
    - uses: actions/checkout@v4

    - name: Download Package
      uses: actions/download-artifact@v4
      with:
        name: Packages
        path: dist

    - name: Publish package to PyPI
      uses: pypa/gh-action-pypi-publish@v1.8.14

    - name: Push tag
      run: |
        git config user.name "pytest bot"
        git config user.email "pytestbot@gmail.com"
        git tag --annotate --message=v${{ github.event.inputs.version }} v${{ github.event.inputs.version }} ${{ github.sha }}
        git push origin v${{ github.event.inputs.version }}
