#!/bin/sh -e

BEEHIVE_ARCHES="x86_64 i586"
export REPOCOP_TEST_OUTPUTDIR=~/.repocop/testdb
eval `repocop-export-environment-for-external-tests`

verbose=
while getopts d:hv opt; do
	case "$opt" in
		d) BUILDLOGDIR="${OPTARG:?}" 
			readonly BUILDLOGDIR ;;
		v) verbose=v ;;
		h) pod2usage --exit=0 "$0"; exit 0 ;;
		*) pod2usage --exit=2 "$0"; exit 2 ;;
	esac
done
shift "$((OPTIND-1))"

BUILDLOGDIR=${BUILDLOGDIR:-$1}
BUILDLOGDIR=${BUILDLOGDIR:-~/beehive-logs}

discard_tests()
{
    TESTS_TO_DISCARD=
    for arch in "$@"; do
	TESTS_TO_DISCARD="$TESTS_TO_DISCARD \
	beehive-log-unpackaged-files-found-$arch \
	beehive-log-rpmsodiff-$arch \
	beehive-log-verify-elf-$arch \
	beehive-log-build-environment-$arch \
	beehive-log-dependency-needs-epoch-$arch \
	beehive-log-non-strict-dependency-$arch \
";
	rm -rf "$REPOCOP_STATEDIR/beehive-log-non-strict-dependency-$arch"/
    done
    repocop-discard-test $TESTS_TO_DISCARD
}

process_arch_logs()
{
    local ARCH=$1
    [ -d $BUILDLOGDIR/$ARCH ] || exit 1
    for log in $BUILDLOGDIR/$ARCH/*; do
	[ -z "$verbose" ] || echo "processing $arch $log"
	LOG=$log
	CAT=cat
	case $log in
	    *.zst) CAT=zstdcat; LOG=${log%%.zst} ;;
	    *.gz) CAT=zcat; LOG=${log%%.gz} ;;
	    *.bz2) CAT=bzcat; LOG=${log%%.bz2} ;;
	    *.xz) CAT=xzcat; LOG=${log%%.xz} ;;
	esac
	$CAT $log | repocop-unittest-build-log-filter-diff | timeout 5m repocop-unittest-build-log --arch=$ARCH --log=$LOG
    done
}

if [ -x /usr/bin/repocop-notify-from-external-test ]; then
    /usr/bin/repocop-notify-from-external-test --pid=$$ --start
fi

discard_tests $BEEHIVE_ARCHES

for arch in $BEEHIVE_ARCHES; do
    process_arch_logs $arch
done

if [ -x /usr/bin/repocop-notify-from-external-test ]; then
    /usr/bin/repocop-notify-from-external-test --pid=$$ --stop
fi

: <<'__EOF__'

=head1	NAME

repocop-process-beehive-logs - helper utility for beehive logs test.

=head1	SYNOPSIS

B<repocop-process-beehive-logs>
[B<-h>] 
[B<-d> I<destdir>]
[<destdir>]


=head1	DESCRIPTION

B<repocop-process-beehive-logs> 

TODO

=head1	OPTIONS

=over

=item	B<-d> I<destdir>

Name of dir to store logs. Default is ~/beehive-logs.

=item	B<-h>

Display this help and exit.

=item	B<-v>

verbose.

=back

=head1	AUTHOR

Written by Igor Vlasenko <viy@altlinux.org>.

=head1	COPYING

Copyright (c) 2012-2018 Igor Vlasenko, ALT Linux Team.

This 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.

=cut

__EOF__
