#!/usr/bin/perl
use strict;
use warnings;
use Socialtext::Resting::Getopt qw/get_rester/;

my $r = get_rester();
my $most_wanted_page = 'Most Wanted Pages';

warn "Fetching all pages...\n";
my @all_pages = $r->get_pages();
my %most_wanted;
my %wanters;
for my $page (@all_pages) {
    next if $page eq $most_wanted_page;
    warn "Fetching '$page'\n";
    my @incipient = $r->get_frontlinks($page, 1);
    for my $i (@incipient) {
        $wanters{$page}++;
        push @{ $most_wanted{$i} }, $page;
    }
}

warn "Creating most wanted page...\n";
my $incipient_page_count = keys %most_wanted;
my $now = localtime;
my $page_wanters_count = keys %wanters;
my $new_page = "^^ Most Wanted Pages in " . $r->workspace . " at $now.\n"
             . "There are $incipient_page_count pages wanted by $page_wanters_count other pages.\n"
             . "This page is autogenerated by `st-most-wanted`\n\n"
             . "| *Wanted Page* | *Count* | *Wanters* |\n";
for my $i ( sort { @{ $most_wanted{$b} } <=> @{ $most_wanted{$a} } }
            keys %most_wanted ) {
    $new_page .= "| $i | " . @{ $most_wanted{$i} } . " | "
               . join(", ", map { "$_" } @{ $most_wanted{$i} })
               . " |\n";
}

warn "Putting most wanted pages page...\n";
$r->put_page('Most Wanted Pages', $new_page);
exit;
