#!/usr/bin/env bash
set -euo pipefail
unset MAKEFLAGS MFLAGS GNUMAKEFLAGS
make_bin=$(command -v gmake || command -v make)
m() { "$make_bin" --no-print-directory -rR "$@"; }
work_dir=$(mktemp -d)
if [ "${KEEP_WORK:-0}" = 1 ]; then
  trap 'printf "Artifacts: %s\n" "$work_dir"' EXIT
else
  trap 'rm -rf -- "$work_dir"' EXIT
fi
cd "$work_dir"
export TMPDIR="$work_dir"
cat > main.tex <<'INPUT_84_1'
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\section*{Measured values}
\includegraphics[width=0.8\linewidth]{figures/chart.pdf}
\end{document}
INPUT_84_1
cat > data.tsv <<'INPUT_84_2'
1 2
2 4
3 3
INPUT_84_2
cat > plot.gp <<'INPUT_84_3'
set terminal pdfcairo size 5in,3in
set output 'figures/chart.pdf'
set xlabel 'Sample'
set ylabel 'Value'
set yrange [0:6]
plot 'data.tsv' using 1:2 with linespoints title 'Measurements'
INPUT_84_3
cat > Makefile <<'MAKEFILE'
LATEXMK ?= latexmk
FLAGS := -norc -pdf -no-shell-escape
FLAGS += -interaction=nonstopmode -halt-on-error
.DELETE_ON_ERROR:
.DEFAULT_GOAL := all
.PHONY: all
all: build/main.pdf
figures/chart.pdf: data.tsv plot.gp | figures
	@printf "generate PDF figure\n"
	@gnuplot plot.gp
build/main.pdf: main.tex figures/chart.pdf | build
	@printf "compile document with figure\n"
	@$(LATEXMK) $(FLAGS) -outdir=build main.tex > build/latexmk.log 2>&1 || \
	  { cat build/latexmk.log >&2; exit 1; }
build figures:
	@mkdir -p $@
MAKEFILE
m -s all
m -q all
cp figures/chart.pdf first-chart.pdf
printf "1 2\n2 5\n3 3\n" > data.tsv
touch -t 202001010101 plot.gp main.tex figures/chart.pdf build/main.pdf
touch -t 202101010101 data.tsv
m -s all
if cmp -s first-chart.pdf figures/chart.pdf; then exit 1; fi
pdftotext build/main.pdf text.txt
grep -q 'Measured values' text.txt
grep -q 'Measurements' text.txt
printf "updated figure and document verified\n"
