name: Publish Python 🐍 distributions 📦 to PyPI and TestPyPI

on: push

jobs:
  build-n-publish:
    name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
    runs-on: ubuntu-22.04
    environment:
      name: pypi
      url: https://pypi.org/p/confluence.md
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python 3.9
      uses: actions/setup-python@v5
      with:
        python-version: 3.9
    - name: Install pip
      run: python -m pip install --upgrade pip --user
    - name: Install pytest
      run: python -m pip install -r requirements.txt --user
    - name: Run tests
      shell: bash
      env:
        CONFLUENCE_USER: ${{ secrets.CONFLUENCE_USER }}
        CONFLUENCE_TOKEN: ${{ secrets.CONFLUENCE_TOKEN }}
      run: >-
        pytest
        -c "import src.tests.test_confluencemd"
        --user="$CONFLUENCE_USER"
        --token="$CONFLUENCE_TOKEN"
        -vv
    - name: Install pypi/build
      run: python -m pip install build --user
    - name: Build a binary wheel and a source tarball
      run: >-
        python -m
        build
        --sdist
        --wheel
        --outdir dist/
    - name: Publish distribution 📦 to Test PyPI
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        skip-existing: true
        repository-url: https://test.pypi.org/legacy/
        password: ${{ secrets.TEST_PYPI_API_TOKEN }}
    - name: Publish distribution 📦 to PyPI
      if: startsWith(github.ref, 'refs/tags')
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        password: ${{ secrets.PYPI_API_TOKEN }}