sitemap: include major subpages
[sheet.git] / tools / mksitemap
index cbfa8c93c7c14b450100401d97f5fe2eeefe5377..8b16f6fdcd3aa0e342738485aea0ed58039a4ed9 100755 (executable)
@@ -4,27 +4,40 @@ use warnings;
 
 our $VERSION = '1.00';
 
+use File::stat;
+use Time::Piece;
+
 my @pages = (
-       [''],
-       [qw( readline vi digraphs charset unicode )],
-       [qw( vimperator mutt nethack mplayer )],
-       [qw( writing )],
-       [qw( source )],
+       [qw( index )],
+       [qw( vi digraphs charset browser writing sc/2 termcol )],
+       [qw( readline latin unicode countries emoji perl )],
+       [qw( vimperator mutt nethack mplayer font )],
+       [qw( apl less screen brahmi digits sc termcol/legacy )],
+       [qw( chars/table/html source )],
 );
 
 my %freq = (
-       (map { $_ => 'yearly' } qw[ readline nethack mplayer ]),
+       (map { $_ => 'yearly' } qw[ readline nethack mplayer apl ]),
+       (map { $_ => 'weekly' } qw[ browser ]),
 );
 
+my %known = map { s{/.*}{}r => 1 } map { @{$_} } @pages;
+$known{$_} or warn "page $_ undeclared\n"
+       for grep { !/\./ } map { s/\.plp\z//r } glob '*.plp';
+
 say '<?xml version="1.0" encoding="UTF-8"?>';
 say '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
 for my $group (@pages) {
        state $prio = 1;
-       for my $page (@{$group}) {
+       for my $file (@{$group}) {
+               (my $page = $file) =~ s/\Aindex\z//;
+               $file =~ s{/.*}{};
+               $file .= '.plp';
                print '<url>';
                print "<loc>http://sheet.shiar.nl/$page</loc>";
                printf '<changefreq>%s</changefreq>', $freq{$page} // 'monthly';
                printf '<priority>%.2f</priority>', $prio;
+               printf '<lastmod>%s</lastmod>', localtime(stat($file)->mtime)->date;
                say '</url>';
        }
        $prio -= .1;