#!/bin/sh

#AUTOREPO_ROOT
#AUTOREPO_FILES_SRPMS
#SRPMSDIRNAME

. autorepo-config

[ -n "$AUTOREPO_ARCHIVE_ROOT" ] || exit 0
[ -d "$AUTOREPO_ARCHIVE_ROOT" ] || exit 0

exit_handler()
{
	local rc=$1
	rm -f -- "$TMPFILE1" "$TMPFILE2"
	exit $rc
}

find_last_dir()
{
	local dir=$1
	last=`ls $dir | tail -1`
}

last=
find_last_dir $AUTOREPO_ARCHIVE_ROOT
if [ -n "last" ]; then
    last_year=$last
    last=
    find_last_dir $AUTOREPO_ARCHIVE_ROOT/$last_year
    if [ -n "last" ]; then
	last_month=$last
	last=
	find_last_dir $AUTOREPO_ARCHIVE_ROOT/$last_year/$last_month
	if [ -n "last" ]; then
	    last_day=$last
	    # check if archive the same
	    PROG=ARchive
	    trap 'exit 143' HUP PIPE INT TERM
	    TMPFILE1="$(mktemp -t "$PROG.XXXXXXXXXX")"
	    TMPFILE2="$(mktemp -t "$PROG.XXXXXXXXXX")"
	    trap 'exit_handler $?' EXIT

	    pushd $AUTOREPO_ARCHIVE_ROOT/$last_year/$last_month/$last_day/ >/dev/null
	    find . | sort > "$TMPFILE1"
	    popd >/dev/null

	    pushd $AUTOREPO_ROOT/ >/dev/null
	    find . | sort > "$TMPFILE2"
	    popd >/dev/null

	    cmp -s "$TMPFILE1" "$TMPFILE2"
	    rc=$?
	    rm -f -- "$TMPFILE1" "$TMPFILE2"

	    if [ $rc -eq 0 ]; then
		# archive is up to date
		exit 0
	    fi
	fi
    fi
fi

CUR_ARCHIVE="$AUTOREPO_ARCHIVE_ROOT/"`date '+%Y/%m/%d'`
if [ -d "$CUR_ARCHIVE" ]; then
    echo "Oops! archive already exists."
    exit 2
fi
mkdir -p "$CUR_ARCHIVE"

cp -drl $AUTOREPO_ROOT/* "$CUR_ARCHIVE/"
