#!/usr/bin/env bash

set -eux

rm -rf save-dir-*
rm -rf restore-dir-*

hn=$(set -eu; hostname)

(find ./to-be-saved -name .svn -prune -o -type f -print0 | xargs -0 md5sum -b | sort -k 2) > to-be-saved.md5sums

for record in $(../../this-interpreter --variety all)
do
	pyver=$(echo "$record" | awk -F'%' ' { print $1 }')
	interp=$(echo "$record" | awk -F'%' ' { print $2 }')

	rm -rf save-dir-$pyver

	find to-be-saved -name .svn -prune -o -print0 | \
		"$interp" ../../backshift \
			--save-directory save-dir-"$pyver" \
			--backup \
			--hostname "$hn" \
			--subset test \
			--init-savedir

	backup_id=$(set -eu; "$interp" ../../backshift --save-directory save-dir-"$pyver" --list-backups | \
		tail -1 | \
		sed 's/ .*$//')

	rm -rf restore-dir-$"pyver"
	mkdir -p restore-dir-"$pyver"

	"$interp" ../../backshift \
		--save-directory save-dir-"$pyver" \
		--produce-tar \
		--backup-id "$backup_id" | \
		(cd restore-dir-"$pyver" && tar xvf -)

	(
		tbs=$(pwd)
		cd restore-dir-"$pyver" && \
			mv ./"$tbs"/to-be-saved .
	)

	(cd restore-dir-"$pyver" && find . -type f -print0 | xargs -0 md5sum -b | sort -k 2) > restore-dir-"$pyver".md5sums

	echo Diffing "$pyver"
	diff -C8 -b to-be-saved.md5sums restore-dir-"$pyver".md5sums
done