From 92ed41381f40c97b52b0e96f0eaeaa9025091411 Mon Sep 17 00:00:00 2001
From: Gregor Kleen <gkleen@yggdrasil.li>
Date: Tue, 24 Oct 2017 15:32:28 +0200
Subject: Bachelor's thesis; look up literature

---
 gup/pdf.gup | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

(limited to 'gup')

diff --git a/gup/pdf.gup b/gup/pdf.gup
index d0ebac5..31515af 100755
--- a/gup/pdf.gup
+++ b/gup/pdf.gup
@@ -28,7 +28,11 @@ if [[ $beamerAspects[(i)${2:r:e}] -le $#beamerAspects ]]; then
 fi
 
 base=(${2:r}.(md|lhs|tex)([1]))
-metadata=(${2:r}.meta.yml([1]N))
+metadata=${2:r}.meta.yml
+
+if ! [[ -e ${metadata} ]] && ! gup --buildable ${metadata}; then
+    metadata=""
+fi
 
 gup -u ${base} ${metadata} preamble.tex
 
@@ -41,9 +45,13 @@ 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)
+extraArgs=(-R -V "geometry=margin=2cm" -V "fontfamily=libertine" -H ${buildDir}/preamble.tex --listings --latex-engine=lualatex --biblatex)
+#extraArgs+=(--filter=pandoc-citeproc)
 
 
+compileDir=$(mktemp -d)
+cleanupList+=("cd /" "rm -rfv ${compileDir}")
+
 if [[ -n ${metadata} ]]; then
     input=$(mktemp)
     cleanupList+=("rm -v ${input}")
@@ -56,10 +64,19 @@ if [[ -n ${metadata} ]]; then
     logged pandoc -R ${class} -t native ${base} >>${input}
 
     extraArgs+=(-f native)
-fi
 
-compileDir=$(mktemp -d)
-cleanupList+=("cd /" "rm -rfv ${compileDir}")
+
+    bibFiles=$(pandoc -f markdown -t json -s ${metadata} | jq -r '.meta.bibliography.c[] | (.c[0].c)? // .c')
+
+    gup -u ${(f)bibFiles}
+
+    for bibFile (${(f)bibFiles}); do
+        targetPath=${compileDir}/$(realpath --relative-to=${base:h} -- ${base:h}/${bibFile:h})
+        
+        [[ ! -e ${targetPath} ]] && logged mkdir -p ${targetPath}
+        logged cp ${bibFile} ${targetPath}/${bibFile:t}
+    done
+fi
 
 if [[ ${base:t:r} == "presentation" ]]; then
     gup -u ${buildDir}/beamer-template.tex
@@ -70,15 +87,10 @@ fi
 logged pandoc ${extraArgs} -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
 
 # cat -n ${base:t:r}.tex >&2
 
-max=5
+max=10
 runs=0
 run=true
 while ${run} && [[ ${runs} -lt ${max} ]]; do
-- 
cgit v1.2.3