#!/usr/bin/env zsh ret=0 logged() { printf ">>> ā€˜%sā€™ in %s\n" "$*" $(pwd) >&2 ${@} ret=$? printf ">>> %d\n" $ret >&2 } typeset -a cleanupList cleanupList=() cleanup() { for cmd in ${cleanupList}; do eval $cmd done } trap cleanup EXIT base=(${2%.pdf}.(md|lhs|tex)([1])) metadata=(${2%.pdf}.meta.yml([1]N)) gup -u ${base} ${metadata} preamble.tex buildDir=$(pwd) base=${base:A} metadata=${metadata:A} cd ${base:h} input=${base} typeset -a extraArgs extraArgs=(-R -V "geometry=margin=2cm" -V "fontfamily=libertine" -H ${buildDir}/preamble.tex --listings --latex-engine=lualatex --filter=pandoc-citeproc --biblatex) if [[ -n ${metadata} ]]; then input=$(mktemp) cleanupList+=("rm -v ${input}") logged pandoc -f markdown -t native -s ${metadata} | head -n -1 >>${input} logged pandoc -R -t native ${base} >>${input} extraArgs+=(-f native) fi # logged pandoc ${extraArgs} -t latex ${base} | cat -n >&2 compileDir=$(mktemp -d) cleanupList+=("cd /" "rm -rfv ${compileDir}") logged pandoc ${extraArgs} -t latex -o ${compileDir}/${base:t:r}.tex ${input} >&2 cd ${compileDir} for f (bib); do printf "Checking for ā€˜%sā€™\n" ${base:h}/${f} >&2 [[ -e ${base:h}/${f} ]] || continue logged rsync -av ${base:h}/${f} . done max=5 runs=0 run=true while ${run} && [[ ${runs} -lt ${max} ]]; do output=$(mktemp) cleanupList+=("rm -v ${output}") logged lualatex ${base:t:r}.tex >${output}