name: Build documentation

on:
    push:
        branches:
            - main

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
    contents: read
    pages: write
    id-token: write

# Allow one concurrent deployment
concurrency:
    group: "pages"
    cancel-in-progress: true

# Default to bash
defaults:
    run:
        shell: bash

jobs:
    build:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v5
            - name: Set up Python
              uses: actions/setup-python@v6
              with:
                  python-version: "3.10"
            - name: Setup Just
              uses: extractions/setup-just@v3
            - name: Install uv and set the Python version
              uses: astral-sh/setup-uv@v6
              with:
                  python-version: "3.10"
            - name: Install the project
              run: uv sync --locked --all-extras --dev
            - name: Build
              run: just docs-build
            - name: Upload artifact
              uses: actions/upload-pages-artifact@v4
              with:
                  path: ./site

    deploy:
        environment:
            name: github-pages
            url: ${{ steps.deployment.outputs.page_url }}
        runs-on: ubuntu-latest
        needs: build
        steps:
            - name: Deploy to GitHub Pages
              id: deployment
              uses: actions/deploy-pages@v4
