#!/usr/bin/perl -w

use strict;
use warnings;
use Test::Repocop::TestDB;
use Test::Repocop::Metadata;
use Test::Repocop::CLI::Base;
our @ISA=qw/Test::Repocop::CLI/;

#$Repocop::arg::reportlevel='skip';
my $branch='sisyphus';
our @LONGOPT=(
);
__PACKAGE__->get_and_process_cli_options();
&Test::Repocop::Workdir::die_if_nothing_to_report();

my $metadata=Test::Repocop::Metadata->new();
my $testdb=Test::Repocop::TestDB->new();
my $cache=$testdb->get_pkg_test_status_result_iterator();
my %brokenid;
while (my ($pkgid,$test,$status,$result)=$cache->iterate4()) {
    # linearize
    my $sourceid=$metadata->sourceid($pkgid);
    unless (defined $sourceid) {
	# old version of srpm imported from repology, for example
	$brokenid{$pkgid}=1;
	next;
    }
    my $name=$metadata->name($pkgid);
    my $version=$metadata->version($pkgid);
    my $release=$metadata->release($pkgid);
    my $arch=$metadata->arch($pkgid);
    my $srcname=$metadata->name($sourceid);
    #my $srcversion=$metadata->version($sourceid);
    #my $srcrelease=$metadata->release($sourceid);
    unless (defined $srcname && defined $name && defined $version && defined $release && defined $arch) {
	$brokenid{$pkgid}=1;
	#warn "broken metadata for ", $pkgid, "\n";
	next;
    }
}

map {print $_,"\n"} sort {$a cmp $b} keys (%brokenid);

=head1	NAME

repocop-report-broken-metadata - a tool to check test db for disreptancies

=head1	SYNOPSIS

see repocop-report-txt

=head1	DESCRIPTION

repocop-report-broken-metadata - a tool to check test db for disreptancies


=head1	OPTIONS

none

=head1	AUTHOR

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

=head1	ACKNOWLEGEMENTS

To Alexey Torbin <at@altlinux.org>, whose qa-robot package
had a strong influence on repocop.

=head1	COPYING

Copyright (c) 2008-2021 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

