#!/bin/bash

. `dirname $0`/../config.sh
 
if test -z "${localdir}"; then
    echo skipping due to missing local archive
    exit 1
fi

#set -e

NOCPY_TEMPLATE=$topdir/etc/copyright_error
NOCPY_BIN_TEMPLATE=$topdir/etc/copyright_error_bin

logs="$topdir/files/logs"
log="${logs}/changelogs.log"

test -d "$logs" || mkdir -p "$logs"
test -d "$tmpdir" || mkdir -p "$tmpdir"

if [ -s "$log" ]
then
    savelog -c 14 "$log" > /dev/null
fi

(
date

successful=1
for part in $parts; do
    time "${bindir}/extract_files" -v -d "${localdir}/pool/$part/" \
	-t "${htmldir}/changelogs/pool/$part/" \
	-c "$configdir" -w "$tmpdir" \
	--dumpfile "${filesdir}/changelogs.$part.dump" \
	--cachefile "${filesdir}/changelogs.cache" --debug
    if [ $? -ne 0 ]; then
        echo program exited with non-zero exitcode: $? >&2
    	successful=0
    fi
done

if [ "$successful" -eq 1 ]; then
    find -H "${htmldir}/changelogs/" -name log -cmin +14440 \
     | while read logfile; do
    	dir=$(dirname "$logfile")
	echo deleting $dir
 	rm -r "$dir"
	rmdir --ignore-fail-on-non-empty $(dirname "$dir")
    done
    cdir=$(pwd)
    find -H "${htmldir}/changelogs/" -name current -not -xtype d \
     | while read link; do
    	dir=$(dirname "$link")
	echo repairing current link $link
	rm -v "$link"
	target=$(ls -t1 "$dir" | tail -n1)
	if [ -n "$target" ]; then
		cd $dir && ln -sv $target current
		cd $cdir
	else
		rmdir -v $dir
	fi
    done

else
    echo clean-up skipped because at least one of the extraction runs failed >&2
fi
date
) > $log 2>&1
