a139941fed370dcd201e33365b14f019409dc9c8
[sheet.git] / tools / mksitemap
1 #!/usr/bin/env perl
2 use 5.014;
3 use warnings;
4
5 our $VERSION = '1.00';
6
7 use File::stat;
8 use Time::Piece;
9
10 my @pages = (
11         [qw( index )],
12         [qw( vi digraphs charset browser writing sc termcol )],
13         [qw( readline latin unicode countries emoji perl )],
14         [qw( vimperator mutt nethack mplayer font )],
15         [qw( apl less screen brahmi digits )],
16         [qw( source )],
17 );
18
19 my %freq = (
20         (map { $_ => 'yearly' } qw[ readline nethack mplayer apl ]),
21         (map { $_ => 'weekly' } qw[ browser ]),
22 );
23
24 my %known = map { $_ => 1 } map { @{$_} } @pages;
25 $known{$_} or warn "page $_ undeclared\n"
26         for grep { !/\./ } map { s/\.plp\z//r } glob '*.plp';
27
28 say '<?xml version="1.0" encoding="UTF-8"?>';
29 say '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
30 for my $group (@pages) {
31         state $prio = 1;
32         for my $file (@{$group}) {
33                 (my $page = $file) =~ s/\Aindex\z//;
34                 $file .= '.plp';
35                 print '<url>';
36                 print "<loc>http://sheet.shiar.nl/$page</loc>";
37                 printf '<changefreq>%s</changefreq>', $freq{$page} // 'monthly';
38                 printf '<priority>%.2f</priority>', $prio;
39                 printf '<lastmod>%s</lastmod>', localtime(stat($file)->mtime)->date;
40                 say '</url>';
41         }
42         $prio -= .1;
43 }
44 say '</urlset>';
45