#!/usr/bin/perl -w
use strict;

use XML::Bare;
use Data::Dumper;


my @slfoprojects = (
	'SUSE:ALP:Source:Standard:1.0'
);

my $isc = "osc -A https://api.suse.de/";

my %sourcenames = ();
my %states = ();
my $request;

foreach my $prj (@slfoprojects) {
	open(ISC,"$isc rq list $prj|");
	while (<ISC>) {
		if (/^(\d*).*State:(\S*)/) {
			$request = $1;
			$states{$request} = $2;
			#print "request $request / state $states{$request}\n";
		}
		if (/submit:\s*(\S*)@/) {
			$sourcenames{$request} = $1;

			#print "$request - $1\n";
		}
	}
	close(ISC)||die "$isc rq list $prj:$!";
}

foreach my $rq (sort keys %sourcenames) {
	next unless ($sourcenames{$rq} =~ /\/patchinfo/);

	# print "has patchinfo: $rq, aka $sourcenames{$rq}\n";

	my $pn = $sourcenames{$rq};

	$pn =~ s/.*\///;

	my $staging = "unknown";

	open(ISC,"$isc se $pn|");
	while (<ISC>) {
		next unless (/^SUSE.*Staging/);
		/(\S*)\s*(\S*)/;
		$staging = $1;

	}
	close(ISC)||die "isc se $sourcenames{$rq}:$!";

	next if ($staging eq "unknown");

	# print "$pn is in $staging\n"; 

	open(PIXML,"$isc cat $staging $pn _patchinfo|");

	my $xml = join("\n",<PIXML>);
	close(PIXML);

        my $xmlparser = new XML::Bare( text => $xml );

        if (!$xmlparser) {
                warn "parse_builddep: XML: $xml";
                return;
        }
        my $pixml = $xmlparser->parse()||die;

	my $packages = "unk";
	if (defined($pixml) && defined($pixml->{patchinfo}) && defined($pixml->{patchinfo}->{package})) {
		if (ref($pixml->{patchinfo}->{package}) eq "ARRAY") {
			my @pkgs = ();
			foreach my $pkg (@{$pixml->{patchinfo}->{package}}) {
				push @pkgs,$pkg->{value};
			}
			$packages = join(",",@pkgs);
		} else {
			$packages = $pixml->{patchinfo}->{package}->{value};
		}
	}

	print "$staging $pn $packages: " .  $pixml->{patchinfo}->{category}->{value} . "/"  . $pixml->{patchinfo}->{rating}->{value} . "\n";
}
