#!/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 > draft.tex <<'INPUT_86_1'
\def\DraftVersion{1}
\input{main}
INPUT_86_1
cat > final.tex <<'INPUT_86_2'
\input{main}
INPUT_86_2
cat > main.tex <<'INPUT_86_3'
\documentclass{article}
\begin{document}
\ifdefined\DraftVersion
Draft version: comments are visible.
\else
Final version: ready for readers.
\fi
\end{document}
INPUT_86_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 draft final
all: draft final
draft: build/draft/main.pdf
final: build/final/main.pdf
build/%/main.pdf: %.tex main.tex
	@mkdir -p $(@D)
	@$(LATEXMK) $(FLAGS) -outdir=$(@D) -jobname=main $*.tex > $(@D)/latexmk.log 2>&1 || \
	  { cat $(@D)/latexmk.log >&2; exit 1; }
MAKEFILE
m -s all
pdftotext build/draft/main.pdf draft.txt
pdftotext build/final/main.pdf final.txt
grep -q 'Draft version: comments are visible.' draft.txt
grep -q 'Final version: ready for readers.' final.txt
test -s build/draft/main.aux
test -s build/final/main.aux
m -q all
printf "draft and final PDFs have independent auxiliary state\n"
