#!/usr/bin/env bash

set -eu

case "$#" in
	1)
		echo "$0: Warning: Only one directory to compare" 1>&2
		;;
	2)
		export left_dir="$1"
		export right_dir="$2"

		if [ -f "$left_dir"/chunks/data ] && [ -f "$right_dir"/chunks/data ]
		then
			echo "$0: Not trie's: $left_dir, $right_dir" 1>&2
			exit 0
		fi

		left_data_files=$(cd "$left_dir" && find chunks -type f -print | sort)
		right_data_files=$(cd "$right_dir" && find chunks -type f -print | sort)

		error=False

		if [ "$left_data_files" = "" ]
		then
			echo "$0: \$left_data_files is empty" 1>&2
			error=True
		fi
			
		if [ "$right_data_files" = "" ]
		then
			echo "$0: \$right_data_files is empty" 1>&2
			error=True
		fi
			
		if [ "$error" = True ]
		then
			exit 1
		fi

		union_data_files=$(echo $left_data_files $right_data_files | tr ' ' '\012' | sort | uniq)

		# We used to do byte for byte comparisons of the chunks, but the new CPython 3.3 compresses subtly differently, so now we just
		# test for the presence of the correct filenames
		if [ "$left_data_files" = "$right_data_files" ]
		then
			:
		else
			echo "$0: \$left_data_files != \$right_data_files" 1>&2
			exit 1
		fi

#		cd "$left_dir"
#		for file in $union_data_files
#		do
#			diff -u "$file" ../$right_dir/$file
#		done
		;;
	*)
		echo "$0: Warning: Too many directories to compare: $#" 1>&2
		;;
esac