#!/usr/bin/perl if($ARGV[0] eq "-b") { $usetype="Bugs"; $urlroot="http://sourceforge.net/tracker/index.php?func=detail&group_id=44306&atid=439118&aid="; $class="bugs"; } elsif($ARGV[0] eq "-p") { $usetype="Patches"; $urlroot="http://sourceforge.net/tracker/index.php?func=detail&atid=439120&group_id=44306&aid="; $class="patches"; } else { $usetype="Feature Requests"; $urlroot="http://sourceforge.net/tracker/index.php?func=detail&group_id=44306&atid=439121&aid="; $class="requests"; } $userlink="http://sourceforge.net/users"; $usestatus="Open"; $hideres="Fixed"; while() { if($_ =~ /^/) { $a=1; } elsif($_ =~ /^<\/artifact>/) { if($a && ($type eq $usetype) && ($status eq $usestatus)) { # ($res ne $hideres)) { push @ids, $id; $summary =~ s/\&quot;/\"/g; $summary =~ s/\&gt;/\>/g; $summary =~ s/\&lt;/\(\d+)<\/field>/) { $id = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $assignid = $1; $assignuser = $2; } elsif($_ =~ /(\d+)<\/field>/) { $prio = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $status = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $res = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $summary = $1; } elsif($_ =~ /(\d+)<\/field>/) { $date = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $type = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $cat = $1; } elsif($_ =~ /([^<]+)<\/field>/) { $groupid = $1; } } } sub tabletop { my $data; $data = join("", "\n", "", "", "", "", "", "", "", ""); return $data; } my %reslookup=('Works For Me' => 4, 'None' => 10, 'Accepted' => 10, 'Later' => 8, 'Rejected' => 1, 'Wont Fix' => 0, 'Invalid' => 0, 'Duplicate' => 3, 'Fixed' => 6); my %classlookup=('Works For Me' => 'bad', # 'None' => 'none', 'Wont Fix' => 'bad', 'Duplicate' => 'bad', 'Rejected' => 'bad', 'Invalid' => 'bad', 'Out of Date' => 'bad', 'Fixed' => 'fixed'); my $fixed; my $open; sub sortthem { my $ares, $bres; $ares = $reslookup{$item{$a, 'res'}}; $bres = $reslookup{$item{$b, 'res'}}; if($bres == $ares) { if($item{$b, 'prio'} == $item{$a, 'prio'}) { return $item{$a, 'id'} <=> $item{$b, 'id'}; } return $item{$b, 'prio'} <=> $item{$a, 'prio'}; } return $bres <=> $ares; } my @s = sort sortthem @ids; my @scats = sort keys %categories; my $total; for(@scats) { my $showcat = $_; my @out; my $entries; push @out, tabletop(); $entries=0; for(@s) { my $id = $_; if($item{$id,'showsn'}) { # already displayed next; } if($item{$id,'cat'} ne $showcat) { # wrong category next; } $item{$id, 'shown'}=1; $entries++; $total++; my $res = $item{$id, 'res'}; my $prio = $item{$id, 'prio'}; my $assignuser = $item{$id, 'user'}; my $summary = $item{$id, 'sum'}; my $href=$assignuser ne "nobody"? "$assignuser": "$assignuser"; $cl=""; if( $classlookup{$res} ) { $cl = "class=\"".$classlookup{$res}."\""; } if($res eq "Fixed") { $fixed++; } elsif($res eq "None") { $open++; } $date = $item{$id, 'date'}; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($date); $date = sprintf("%04d-%02d-%02d %02d:%02d", $year+1900, $mon+1, $mday, $hour, $min); push @out, "", "", "", "", "", "", "\n"; } print "

$showcat

($entries $class)"; print @out; print "
idresolutionprioassignedsummarysubmitted
$id$res$prio$href$summary$date
\n"; } printf("

Totally $total $class ($fixed marked as fixed, $open open and %d bad)", $total-$open-$fixed);