name: Build Sphinx docs

on:
  workflow_dispatch:
  push:
    tags:
      - "[0-9]+.[0-9]+.[0-9]+*"
    branches:
      - main
      - 'stable/**'
  pull_request:
    branches:
      - main
      - 'stable/**'

jobs:
  build_and_deploy_docs:
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: actions/setup-python@v5
        with:
          python-version: '3.9'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install tox
          sudo apt-get update
          sudo apt-get install -y pandoc
      - name: Tell reno to name the upcoming release after the branch we are on
        shell: bash
        run: |
          sed -i.bak -e '/unreleased_version_title:*/d' releasenotes/config.yaml
          echo unreleased_version_title: \"Upcoming release \(\`\`${GITHUB_REF_NAME}\`\`\)\" >> releasenotes/config.yaml
      - name: Build docs
        shell: bash
        run: |
          tox -edocs
      - name: Prepare docs artifact
        if: always()
        shell: bash
        run: |
          mkdir artifact
          cp -a docs/_build/html artifact/qiskit-addon-cutting-htmldocs
      - name: Upload docs artifact
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: qiskit-addon-cutting-htmldocs
          path: ./artifact
      - name: Deploy docs
        if: ${{ github.ref == 'refs/heads/stable/0.9' }}
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs/_build/html/