- Update pre-commit hook to compile cv.tex and cv_de.tex before generating webp - Add post-push hook to rsync PDFs to bocken.org:/var/www/static/ - Update documentation with new hook requirements and functionality
88 lines
2.4 KiB
Bash
Executable File
88 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Pre-commit hook to compile LaTeX files and generate cv.webp
|
|
|
|
set -e # Exit on error
|
|
|
|
# Function to compile LaTeX file
|
|
compile_latex() {
|
|
local texfile=$1
|
|
local pdffile="${texfile%.tex}.pdf"
|
|
|
|
echo "Compiling $texfile..."
|
|
|
|
# Run pdflatex twice to resolve references
|
|
pdflatex -interaction=nonstopmode "$texfile" > /tmp/latex_output.log 2>&1
|
|
pdflatex -interaction=nonstopmode "$texfile" > /tmp/latex_output.log 2>&1
|
|
|
|
# Check if PDF was created successfully (ignore exit code as warnings cause non-zero)
|
|
if [ -f "$pdffile" ]; then
|
|
echo "✓ Successfully compiled $pdffile"
|
|
return 0
|
|
else
|
|
echo "✗ Failed to compile $texfile"
|
|
echo "See /tmp/latex_output.log for details"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to generate webp from PDF
|
|
generate_webp() {
|
|
local pdffile=$1
|
|
|
|
echo "Generating cv.webp from $pdffile..."
|
|
|
|
# Use pdftoppm to convert first page to PNG, then ImageMagick to convert to WebP
|
|
pdftoppm -png -f 1 -l 1 -singlefile "$pdffile" temp_cv && \
|
|
magick temp_cv.png -quality 85 img/cv.webp && \
|
|
rm -f temp_cv.png
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✓ Successfully generated img/cv.webp"
|
|
git add img/cv.webp
|
|
return 0
|
|
else
|
|
echo "✗ Failed to generate cv.webp"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Check if .tex files are staged or modified
|
|
if git diff --cached --name-only | grep -qE "^cv(_de)?\.tex$" || \
|
|
[ -f "cv.tex" -a "cv.tex" -nt "cv.pdf" ] || \
|
|
[ -f "cv_de.tex" -a "cv_de.tex" -nt "cv_de.pdf" ]; then
|
|
|
|
echo "==== Compiling LaTeX files ===="
|
|
|
|
# Compile cv.tex if it exists and is newer than PDF or staged
|
|
if [ -f "cv.tex" ]; then
|
|
if [ ! -f "cv.pdf" ] || [ "cv.tex" -nt "cv.pdf" ] || \
|
|
git diff --cached --name-only | grep -q "^cv\.tex$"; then
|
|
compile_latex "cv.tex" || exit 1
|
|
fi
|
|
fi
|
|
|
|
# Compile cv_de.tex if it exists and is newer than PDF or staged
|
|
if [ -f "cv_de.tex" ]; then
|
|
if [ ! -f "cv_de.pdf" ] || [ "cv_de.tex" -nt "cv_de.pdf" ] || \
|
|
git diff --cached --name-only | grep -q "^cv_de\.tex$"; then
|
|
compile_latex "cv_de.tex" || exit 1
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
fi
|
|
|
|
# Generate cv.webp from cv.pdf
|
|
if [ -f "cv.pdf" ]; then
|
|
if [ ! -f "img/cv.webp" ] || [ "cv.pdf" -nt "img/cv.webp" ]; then
|
|
echo "==== Generating WebP image ===="
|
|
generate_webp "cv.pdf" || exit 1
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "==== Pre-commit checks complete ===="
|
|
|
|
exit 0
|