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 -pdf -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"
