#!/usr/bin/perl -w

use strict;
use warnings;
use Test::Repocop::Common;
use Test::Repocop::Options;
use Test::Repocop::TestDB;
use Test::Repocop::Metadata;
use Carp;

&Test::Repocop::Options::get_common_options(
);
&Test::Repocop::Options::die_if_nothing_to_report();

my $metadata=Test::Repocop::Metadata->new();
my $testdb=Test::Repocop::TestDB->new();
my $sourceid2specfilename=Test::Repocop::Metadata::sourceid2specfilename();

# hack to process all known test results
undef %Repocop::arg::pkgtable;
my $testdb_3_iterator=$testdb->get_pkg_test_status_iterator();
while (my ($rpm,$test,$status)=$testdb_3_iterator->iterate3_filtered()) {
    #print STDERR "$rpm:$test:$status\n";
    if (!defined $rpm || !defined $test  || !defined $status) {
	print "bad $rpm:$test:$status\n";
    }
    my $sourceid=$metadata->sourceid($rpm);
    my $name=$metadata->name($rpm);
    my $version=$metadata->version($rpm);
    my $release=$metadata->release($rpm);
    my $arch=$metadata->arch($rpm);
    if (!defined $sourceid || !defined $name || !defined $version || !defined $release || !defined $arch) {
	print "forced purge of $rpm (bad rpm.db metadata)\n";
	$testdb->delete_pkg($rpm);
    } else {
	my $srcname=$metadata->name($sourceid);
	if (!defined $srcname) {
	    print "bad metadata for sourceid $sourceid of $rpm\n";
	}
    }
}
