name: Deploy Docs
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install uv
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh
          echo "$HOME/.local/bin" >> "$GITHUB_PATH"

      - name: Install Python 3.12 via uv
        run: |
          export PATH="$HOME/.local/bin:$PATH"
          uv python install 3.12

      - name: Build site
        run: |
          export PATH="$HOME/.local/bin:$PATH"
          uv venv --python 3.12 /tmp/venv
          . /tmp/venv/bin/activate
          python --version
          uv pip install zensical
          uv pip install -e .
          python3 main.py
          zensical build --clean

      - name: Deploy to pages branch
        run: |
          set -e
          git config user.name "forgejo-actions"
          git config user.email "forgejo-actions@noreply.local"

          git fetch origin pages
          git worktree add /tmp/pages-deploy origin/pages
          cd /tmp/pages-deploy

          git rm -rf --ignore-unmatch .
          cp -r "$GITHUB_WORKSPACE"/site/* .
          cp "$GITHUB_WORKSPACE"/site/.[!.]* . 2>/dev/null || true

          git add .
          if ! git diff --staged --quiet; then
            git commit -m "deploy: zensical build from ${GITHUB_SHA::7}"
            git push origin HEAD:pages
          else
            echo "No changes to deploy"
          fi
        env:
          GITHUB_WORKSPACE: ${{ github.workspace }}
          GITHUB_SHA: ${{ github.sha }}
