#!/bin/sh -e

# Set these in the environment to override.
if [ -z "$HOST" ]; then
	HOST=people.debian.org
fi
if [ -z "$BASEDIR" ]; then
	# Please don't change this. If you need it to be something else,
	# override the variable.
	BASEDIR=public_html/d-i/images
fi
if [ -z "$DIR" ]; then
	DIR=`date +%Y-%m-%d`
fi
if [ "$HOST" = "local" ]; then
	SYNC="rsync"
	SYNC_BASEDIR="$BASEDIR"
else
	CALL="ssh $HOST"
	SYNC="rsync -e ssh"
	SYNC_BASEDIR="$HOST:$BASEDIR"
fi
[ -n "$ROOTCMD" ] || ROOTCMD="fakeroot"

overview () {
    LANG=C echo "$(dpkg --print-architecture) ($(date)) $(whoami)@$(hostname | cut -d . -f 1) $1" >> dest/overview.log
}

if [ ! -d pkg-lists ]; then
    echo "You must run this from the build directory"
    exit 1
fi

unset LANG LC_ALL LANGUAGE || true
(cd ../debian && svn up || true)
svn up || true

# Override $TARGETS with custom makefile targets.
if [ -z "$TARGETS" ]; then
	TARGETS="$($ROOTCMD make all_list |grep '^build')"
fi

$ROOTCMD make reallyclean
mkdir dest
touch dest/overview.log
for t in $TARGETS; do
    (
    echo
    echo BUILDING IMAGE FOR $t
    echo
    if $ROOTCMD make $t; then
	overview "$t success"
    else
	overview "$t failed"
    fi
    ) 2>&1 | tee dest/$t.log # This is allowed to fail
done
$ROOTCMD make $(echo $TARGETS | sed 's/build_/stats_/g') | 2>&1 tee dest/stats.txt # This is allowed to fail

echo
echo UPLOADING FILES
echo

$CALL mkdir -p $BASEDIR/${DIR}_RSYNC_IN_PROGRESS
$CALL test ! -d $BASEDIR/daily || $CALL cp -a $BASEDIR/daily/* $BASEDIR/${DIR}_RSYNC_IN_PROGRESS/
$SYNC --stats -rvl --safe-links --delete -e ssh dest/ $SYNC_BASEDIR/${DIR}_RSYNC_IN_PROGRESS/
$CALL rm -rf $BASEDIR/$DIR
$CALL mv $BASEDIR/${DIR}_RSYNC_IN_PROGRESS $BASEDIR/$DIR
$CALL rm -rf $BASEDIR/daily
$CALL ln -sf $DIR $BASEDIR/daily
