Files
unibo-ai-notes/.github/workflows/compile.yml

87 lines
2.5 KiB
YAML

name: Compile LaTeX
on:
push:
branches:
- main
paths: ["src/**", .github/workflows/**]
jobs:
compile:
name: Compile notes
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install LaTeX
run: |
sudo apt update
sudo apt install -y latexmk texlive texlive-science texlive-latex-extra
- name: Checkout old pdfs
uses: actions/checkout@v3
with:
ref: pdfs
path: src/.compiled
- name: Copy basic files to pdfs branch
run: |
cp README.md src/.compiled
cp LICENSE src/.compiled
- name: Compile
run: |
shopt -s globstar
cd src
work_dir=$(pwd)
[[ -f .compiled/.hash.cls ]] && old_class_hash="$(cat .compiled/.hash.cls)" || old_class_hash=''
curr_class_hash="$(git log -n 1 --format='%h' ./ainotes.cls)"
for f in **/[!_]*.tex; do
f_dir=$(dirname $f)
f_base=$(basename $f)
f_nameonly="${f_base%.*}"
[[ -f .compiled/${f_dir}/.hash ]] && old_hash="$(cat .compiled/${f_dir}/.hash)" || old_hash=''
curr_hash="$(git log -n 1 --format='%h' $f_dir)"
# Nothing to update
if [[ $old_hash == $curr_hash && $old_class_hash == $curr_class_hash ]]; then
continue
fi
# Update hash
echo "$curr_hash" > .compiled/${f_dir}/.hash
cd ${f_dir};
# Insert last update date
last_update=$(git log -1 --pretty="format:%ad" --date="format:%d %B %Y" .)
cp --remove-destination $(readlink ainotes.cls) ainotes.cls
sed -i "s/PLACEHOLDER-LAST-UPDATE/${last_update}/" ainotes.cls
latexmk -pdf -jobname=${f_nameonly} ${f_base}
mkdir -p .compiled/${f_dir}
mv ${f_nameonly}.pdf .compiled/${f_dir}/.
cd $work_dir
done
echo "$curr_class_hash" > .compiled/.hash.cls
- name: Move to pdfs branch
uses: s0/git-publish-subdir-action@develop
env:
REPO: self
BRANCH: pdfs
FOLDER: src/.compiled
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_NAME: "github-actions[bot]"
COMMIT_EMAIL: "github-actions[bot]@users.noreply.github.com"
MESSAGE: "🤖 Hello human, doing my things ({sha})"