#!/bin/sh
set -e

prevversion=$(go list -mod=readonly -m -f '{{ .Version }}' github.com/mjl-/mox@latest)
if ! test -d tmp/mox-$prevversion; then
	mkdir -p tmp/mox-$prevversion
	git archive --format=tar $prevversion | tar -C tmp/mox-$prevversion -xf -
fi
(rm -r tmp/apidiff || exit 0)
mkdir -p tmp/apidiff/$prevversion tmp/apidiff/next
(rm apidiff/next.txt apidiff/next.txt.new 2>/dev/null || exit 0)
for p in $(cat apidiff/packages.txt); do
	if ! test -d tmp/mox-$prevversion/$p; then
		continue
	fi
	(cd tmp/mox-$prevversion && apidiff -w ../apidiff/$prevversion/$p.api ./$p)
	apidiff -w tmp/apidiff/next/$p.api ./$p
	apidiff -incompatible tmp/apidiff/$prevversion/$p.api tmp/apidiff/next/$p.api >$p.diff
	if test -s $p.diff; then
		(
		echo '#' $p
		cat $p.diff
		echo
		) >>apidiff/next.txt.new
	fi
	rm $p.diff
done
if test -s apidiff/next.txt.new; then
	(
	echo "Below are the incompatible changes between $prevversion and next, per package."
	echo
	cat apidiff/next.txt.new
	) >apidiff/next.txt
	rm apidiff/next.txt.new
else
	mv apidiff/next.txt.new apidiff/next.txt
fi