#!/bin/bash

CLASS=xavetest
INSTANCE=commit
FULL=0
URLPREFIX=""

OPTS=$(getopt -o c:i:fu: -l class:,instance:,full,urlprefix: -n "$0" -- "$@") || exit $?
eval set -- "$OPTS"
while :; do
    case "$1" in
	-c|--class) CLASS=$2; shift 2;;
	-i|--instance) INSTANCE=$2; shift 2;;
	-f|--full) FULL=1; shift;;
	-u|--urlprefix) URLPREFIX=$2; shift 2;;
	--) shift; break;;
	*) exit 2;;
    esac
done
[ $# -ge 2 ] || exit 3
REPOS=$1
REV=$2

if [ "$INSTANCE" = "${INSTANCE%@}@" ]; then
    INSTANCE=${INSTANCE%@}r$REV
fi

function zsend_to {
    read -r author
    /mit/xavid/bin/zsend -S "$author" "$@"
}

dirs=$(svnlook dirs-changed "$REPOS" -r "$REV")
svnlook info "$REPOS" -r "$REV" | (
    read -r author
    read -r datestamp
    read -r logsize
    log=$(cat)
    echo "$author" # Eaten in zsend_to
    echo "r$REV by $author $datestamp"
    echo "$log"
    if [ -n "$URLPREFIX" ]; then
        svnlook changed "$REPOS" -r "$REV" | while read p ; do
            if echo "$p" | egrep -q '[.]yaml$' ; then
                echo "$p (${URLPREFIX}edit/$(echo "$p" | egrep -o '[^/]+[.]yaml$' | cut -d '.' -f 1))"
            else
                echo "$p"
            fi
        done
    else
        svnlook changed "$REPOS" -r "$REV"
    fi
    if [ "$FULL" -eq 1 ]; then
	echo
	svnlook diff "$REPOS" -r "$REV"
    else
	echo svnlook diff "$REPOS" -r "$REV"
    fi
) | zsend_to -c "$CLASS" -i "$INSTANCE" -s "r$REV - $dirs"
