#!/bin/sh

# Copyright © 2009-2018 Holger Levsen (holger@layer-acht.org)
# Copyright © 2011-2012 Andreas Beckmann (anbe@debian.org)
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>


. /usr/share/piuparts/lib/read_config.sh
. /usr/share/piuparts/lib/write_log.sh

get_config_value MASTER global master-directory
get_config_value SECTIONS global sections
get_config_value HTDOCS global output-directory
get_config_value DAYS global reschedule-untestable-days 7

STARTDATE=$(date -u +%s)
LOG_OUTPUT=$(mktemp)
LOG_PREFIX=$(mktemp)

#
# find packages which have been in untestable for more than $DAYS days and reschedule them for testing
#

LOGS=$(mktemp)
for SECTION in $SECTIONS ; do
	# only act on sections with precedence < 100
	get_config_value PRECEDENCE $SECTION precedence 1
	if [ $PRECEDENCE -gt 99 ] ; then continue ; fi
	# only act on sections with untestable packages
	test -d $MASTER/$SECTION/untestable || continue
	find $MASTER/$SECTION/untestable/ -mtime +$DAYS -name "*.log" 2>/dev/null >> $LOGS
done
if [ -s $LOGS ] ; then
	FINALDATE=$(date -u +%s)
	RUNTIME=$(date -u -d "0 $FINALDATE seconds - $STARTDATE seconds" +%T)
	(
		echo "Untestable packages detected, which have been tested more than $DAYS days ago!"
		echo "These packages have been rescheduled for piuparts testing."
		echo
	) > $LOG_PREFIX
	(
		echo "$(date -u)"
		echo "Runtime: $RUNTIME"
		echo
		for package_log in $(cat $LOGS) ; do
			rm -fv $package_log | sed "s#$MASTER/##g" | tr -d "'"
		done
		echo
	) > $LOG_OUTPUT
	publish_logs $LOG_OUTPUT $LOG_PREFIX $HTDOCS report_untestable_packages
fi
rm $LOGS
