#!/bin/sh

# pngcrush pre-commit hook script for Subversion
# by Ryan Schmidt
# http://www.ryandesign.com/
# MIT license

REPO="$1"
TXN="$2"

PREFIX=/usr/local

CMP=cmp
MKTEMP=mktemp
PNGCRUSH=$PREFIX/bin/pngcrush
SED=sed
SVNLOOK=$PREFIX/bin/svnlook

if [ -z "$TMPDIR" ]; then
	TMPDIR=/tmp
fi

PNGS=$($SVNLOOK changed -t "$TXN" "$REPO" | $SED -n 's|^....\(.*\.png\)$|\1|p')
for PNG in $PNGS; do
	TEMP_BEFORE=$($MKTEMP "$TMPDIR/pngcrush-before.XXXXXXXX")
	TEMP_AFTER=$($MKTEMP "$TMPDIR/pngcrush-after.XXXXXXXX")
	$SVNLOOK cat -t "$TXN" "$REPO" "$PNG" > $TEMP_BEFORE || exit 1
	$PNGCRUSH $TEMP_BEFORE $TEMP_AFTER || exit 1
	$CMP -s $TEMP_BEFORE $TEMP_AFTER
	CMP_RESULT=$?
	rm -f $TEMP_BEFORE $TEMP_AFTER
	if [ $CMP_RESULT -ne 0 ]; then
		echo "Please use pngcrush on $PNG before committing" 1>&2
		exit 1
	fi
done

exit 0

