name: Upload package

on:
  push:
    tags:
      - '*'
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.13'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -U build twine
    - name: Build package
      run: |
        python -m build
    - name: Publish package
      env:
        TWINE_USERNAME: "__token__"
      run: |
        if [[ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]]; then
          export TWINE_REPOSITORY="testpypi"
          export TWINE_PASSWORD="${{ secrets.TEST_PYPI_UPLOAD_TOKEN }}"
        elif [[ "$GITHUB_EVENT_NAME" == "push" ]]; then
          export TWINE_REPOSITORY="pypi"
          export TWINE_PASSWORD="${{ secrets.PYPI_UPLOAD_TOKEN }}"
        else
          echo "Unknown event name: ${GITHUB_EVENT_NAME}"
          exit 1
        fi
        python -m twine upload dist/*
