#!/usr/bin/perl
use strict;
use YAML qw(LoadFile);
push @ARGV, 'deps.yml' unless @ARGV;
my $deps_file = shift;
-f $deps_file or die "usage: mkreport [deps.yml]\n";
my $deps = LoadFile($deps_file);
my $report = 'report.html';
my $num = 30;
my @biggest_users = sort {
scalar keys %{$deps->{$b}{prereqs}} <=> scalar keys %{$deps->{$a}{prereqs}}
} keys %$deps;
my @most_popular = sort {
$deps->{$b}{score} <=> $deps->{$a}{score}
} keys %$deps;
open(OUT, '>', $report) or die "can't write '$report': $!";
print OUT <<'HTML';
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- Metainformation -->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="en" />
<title>CPAN::Dependency Results</title>
<!-- Stylesheets -->
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>CPAN::Dependency Results</h1>
<p>This page is generated by running the script <i>eg/mkreport</i>
using the file <i>deps.yml</i>, which contains the dependency tree.
<i>deps.yml</i> itself can be generated either by running the script
<i>eg/find_deps</i> then <i>eg/score</i>, or by running the script
<i>eg/cpants</i> using the CPANTS database. </p>
<p>It's only here to show some of the information you can
gather using <code>CPAN::Dependency</code>. </p>
<table id="by_score" class="board">
<caption>Distributions sorted by score</caption>
<thead>
<tr><th>Distribution</th> <th>Score</th></tr>
</thead>
<tbody>
HTML
my $row = <<'ROW';
<tr>
<td><a href="http://search.cpan.org/dist/%s"
title="Read the documentation of this distribution on Search CPAN"
>%s</a> [<a href="http://cpan.uwinnipeg.ca/dist/%s"
title="Read the documentation of this distribution on Kobesearch"
>mirror</a>]
<div class="popup %s"><div><strong>%s</strong> %s</div></div>
</td>
<td>%d</td>
</tr>
ROW
for my $dist (@most_popular[0..$num-1]) {
printf OUT $row, $dist, $dist, $dist,
'used-by', "Used by:", join(', ', sort keys %{$deps->{$dist}{used_by}}),
$deps->{$dist}{score}
}
print OUT <<'HTML';
</tbody>
</table>
<table id="by_prereqs" class="board">
<caption>Distributions sorted by number of prerequisites</caption>
<thead>
<tr><th>Distribution</th> <th>Prereqs</th></tr>
</thead>
<tbody>
HTML
for my $dist (@biggest_users[0..$num-1]) {
printf OUT $row, $dist, $dist, $dist,
'prereqs', "Prerequisites:", join(', ', sort keys %{$deps->{$dist}{prereqs}}),
scalar keys %{ $deps->{$dist}{prereqs} }
}
my $date = localtime((stat($deps_file))[9]);
print OUT <<"HTML";
</tbody>
</table>
<p style="clear: both"></p>
<p>Generated using data as of $date. </p>
</body>
</html>
HTML
close(OUT);