name: Build LaTeX PDF

on:
  push:
    paths:
      - '**/*.tex'

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      GIT_SSL_NO_VERIFY: "true"
      NODE_EXTRA_CA_CERTS: /usr/local/share/ca-certificates/Egregge.crt
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Find all root .tex files
        id: roots
        run: |
          ROOTS=$(grep -rl '\\documentclass' --include='*.tex' . | sed 's|^\./||' | tr '\n' ' ')
          echo "roots=$ROOTS" >> "$GITHUB_OUTPUT"
          echo "Root files to build: $ROOTS"

      - name: Compile all root files
        if: steps.roots.outputs.roots != ''
        uses: docker://texlive/texlive:latest-full
        with:
          entrypoint: sh
          args: >-
            -c "mkdir -p pdf aux && for f in ${{ steps.roots.outputs.roots }}; do
            echo Building $f;
            latexmk -xelatex -interaction=nonstopmode -halt-on-error -outdir=pdf -auxdir=aux \"$f\" || exit 1;
            done && find pdf -type f ! -name '*.pdf' -delete"

      - name: Upload built PDFs
        if: steps.roots.outputs.roots != ''
        uses: actions/upload-artifact@v3
        with:
          name: pdf-output
          path: pdf/*.pdf

      - name: Commit PDFs back to repo
        if: steps.roots.outputs.roots != ''
        run: |
          git config user.name "gitea-actions"
          git config user.email "actions@gitea.local"
          git remote set-url origin "https://Domipoke:${{ secrets.GITEA_PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/SharedLaTeX.git"

          BRANCH="${GITHUB_REF#refs/heads/}"
          echo "Pushing to branch: $BRANCH"

          git add pdf/*.pdf
          git diff --cached --quiet || git commit -m "CI: rebuild all PDFs [skip ci]"
          git push origin HEAD:refs/heads/"$BRANCH"