#!/usr/bin/env bash

set -x

set -eu

# You can't check fifo's in subversion, so we create one here, and remove it later
if ! [ -e to-be-saved/im-a-fifo ]
then
	if type mkfifo > /dev/null
	then
		mkfifo to-be-saved/im-a-fifo
	else
		mknod to-be-saved/im-a-fifo p
	fi
fi

for record in $(../../this-interpreter --variety minimal-a; ../../this-interpreter --variety minimal-b)
do
	interp_name=$(echo "$record" | awk -F'%' ' { print $1 }')
	interp_path=$(echo "$record" | awk -F'%' ' { print $2 }')

	rm -rf save-dir-$interp_name

	find $(pwd)/to-be-saved -name .svn -prune -o -print0 | \
		(
			$interp_path ../../backshift \
				--save-directory "save-dir-$interp_name" \
				--backup \
				--hostname $(hostname) \
				--subset test --init-savedir
		)

	backup_id=$(
		$interp_path ../../backshift --list-backups --save-directory save-dir-$interp_name | \
			tail -1 | \
			cut -d ' ' -f 1
		)

	(
		$interp_path ../../backshift \
			--save-directory "save-dir-$interp_name" \
			--backup-id $backup_id \
			--list-backup 2>&1
	) | \
		sed 's/  */ /g' | \
		sort > "backshift.tvf.$interp_name"

	if type gtar > /dev/null 2>&1
	then
		tar=gtar
	else
		tar=tar
	fi

	# $(pwd) used for consistency of pathnames
	find $(pwd)/to-be-saved -name .svn -prune -o -print0 | \
		$tar --null --no-recursion --files-from - --create --file - | \
		$tar tvf - 2>&1 | \
		sed 's/  */ /g' | \
		../old-gtar-timestamps-to-new | \
		sort > tar.tvf

	echo Diffing $interp_name
	diff -C3 -b tar.tvf backshift.tvf.$interp_name
done