#!/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 > data.tsv <<'INPUT_76_1'
books 4
pens 2
books 3
INPUT_76_1
cat > plot.gp <<'INPUT_76_2'
set terminal svg size 640,360
set output 'chart.svg'
set style fill solid 0.7
set boxwidth 0.6
plot 'totals.tsv' using 2:xticlabels(1) with boxes title 'Totals'
INPUT_76_2
cat > Makefile <<'MAKEFILE'
.DEFAULT_GOAL := report.html
totals.tsv: data.tsv
	@printf "aggregate data\n"
	@awk '{sum[$$1]+=$$2} END {for (key in sum) print key, sum[key]}' $< | sort > $@
chart.svg: totals.tsv plot.gp
	@printf "draw chart\n"
	@gnuplot plot.gp
report.html: chart.svg
	@printf "publish report\n"
	@printf '<!doctype html><title>Make report</title><h1>Totals</h1><img src="chart.svg" alt="Totals by category">\n' > $@
MAKEFILE
m -s report.html
cat totals.tsv
test -s chart.svg
test -s report.html
printf "HTML and SVG ready\n"
