#!/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_90_1'
\documentclass{article}
\begin{document}
\input{sections/intro}
\end{document}
INPUT_90_1
mkdir -p sections
cat > sections/intro.tex <<'INPUT_90_2'
A document rebuilt from its source package.
INPUT_90_2
cat > latexmkrc <<'INPUT_90_3'
$pdflatex = 'pdflatex -no-shell-escape -interaction=nonstopmode -halt-on-error %O %S';
$max_repeat = 5;
INPUT_90_3
cat > Makefile <<'MAKEFILE'
LATEXMK ?= latexmk
.DELETE_ON_ERROR:
.DEFAULT_GOAL := all
SOURCES := Makefile main.tex sections/intro.tex latexmkrc
.PHONY: all package
all: build/main.pdf
build/main.pdf: main.tex sections/intro.tex latexmkrc | build
	@$(LATEXMK) -norc -r latexmkrc -pdf -outdir=build main.tex > build/latexmk.log 2>&1 || \
	  { cat build/latexmk.log >&2; exit 1; }
build dist:
	@mkdir -p $@
package: dist/paper-source.tar.gz
dist/paper-source.tar.gz: $(SOURCES) build/main.pdf | dist
	@tar -czf $@ $(SOURCES)
MAKEFILE
m -s package
tar -tzf dist/paper-source.tar.gz
mkdir unpack
tar -xzf dist/paper-source.tar.gz -C unpack
test ! -e unpack/build
m -s -C unpack all
pdftotext unpack/build/main.pdf text.txt
grep -q 'A document rebuilt from its source package.' text.txt
printf "unpacked sources build a verified PDF\n"
