#!/bin/sh
#
# Helper for image creation
#
PUBDIRJIG=$1
RSYNC_TARGET=$2
ARCH=$3

LOG=~/build/log/$ARCH.iso_run
HOSTNAME=`hostname -f`
LOCK=~/iso_run.lock
START=`date -u +%H:%M:%S`

# Check to see if another sync is in progress
if lockfile -! -l 43200 -r-1 "$LOCK"; then  
    echo $HOSTNAME is not doing another iso_run, lock file $LOCK exists
    exit 1
fi
trap "rm -f $LOCK > /dev/null 2>&1" exit  

rm -f $LOG

# Given an ISO image:
# 1. create the torrent file
# 2. create the list file
# 3. copy all of them into place
process_iso() {
    FILE=$1
    OUTDIR=$2

    BTFILE=`echo $FILE.torrent | sed 's/iso-/bt-/'`
    ~/build/mktorrent $FILE >> $LOG

    LISTFILE=`echo $FILE | sed 's/iso-/list-/g;s/\.iso$/.list.gz/g'`
    ~/build/mklist $FILE >> $LOG

    echo $OUTDIR/$FILE >> $LOG
    cp -a $FILE $OUTDIR/$FILE
    echo $OUTDIR/$BTFILE >> $LOG
    cp -a $BTFILE $OUTDIR/$BTFILE
    echo $OUTDIR/$LISTFILE >> $LOG
    cp -a $LISTFILE $OUTDIR/$LISTFILE
}

# Poor man's rsync, but with some local optimisations
copy_files() {
    SRC=$1
    TARGET=$2
    ARCHES=$3

    CURRENT=`pwd`
    cd $SRC
    for ARCH in $ARCHES
    do
        for DISKTYPE in dvd cd bd; do
            for DIRTYPE in bt iso jigdo list; do
                mkdir -p -m775 $TARGET/$ARCH.tmp/$DIRTYPE-$DISKTYPE
            done
        done

        cd $ARCH
	    find . -name '*.jigdo' -o -name '*.template' -o -name '*SUMS*' | \
	        xargs tar cf - | (cd $TARGET/$ARCH.tmp/ && tar xvf -) >> $LOG

        rm -rf bt-* list-*
        mkdir bt-cd bt-dvd bt-bd list-cd list-dvd list-bd
        for file in iso-*/*.iso; do
	    if [ -e $file ] ; then
		process_iso $file $TARGET/$ARCH.tmp
	    fi
        done
        DATE=`date -u`
        sed "s/ARCH/$ARCH/g;s/DATE/$DATE/g" ~/build/weekly.html \
            > $TARGET/$ARCH.tmp/HEADER.html
        cd ..
    done
    cd $CURRENT
}

copy_files $PUBDIRJIG $RSYNC_TARGET $ARCH

echo "$START: Starting $ARCH sync from $PUBDIRJIG to $RSYNC_TARGET" >> $LOG
if [ -e $RSYNC_TARGET/$ARCH ] ; then
    mv -f $RSYNC_TARGET/$ARCH $RSYNC_TARGET/$ARCH.old
fi
mv $RSYNC_TARGET/$ARCH.tmp $RSYNC_TARGET/$ARCH
rm -rf $RSYNC_TARGET/$ARCH.old &

# Update the trace file now to force a sync on free.hands.com after each arch
mkdir -p $RSYNC_TARGET/trace
date -u > $RSYNC_TARGET/trace/cdimage.debian.org

END=`date -u +%H:%M:%S`
echo "$ARCH synced across; started at $START, ended at $END"
echo "$END: Finished" >> $LOG
