36 lines
894 B
Perl
Executable file
36 lines
894 B
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Adds version links to doc pages, assumption:
|
|
#
|
|
# /project/doc <- latest version
|
|
# /project/doc/$x <- older versions, $x must start with a digit and '_' is replaced with a '.' for display.
|
|
#
|
|
use v5.36;
|
|
|
|
my $VER = qr{[0-9][^/]*};
|
|
my $cur = shift;
|
|
my $base = $cur =~ s{/$VER$}{}r;
|
|
my %pages = map +($_ =~ s{^pub/}{}r =~ s{\.html$}{}r,1), @ARGV;
|
|
my $links = '';
|
|
|
|
sub num($s) { $s =~ s/([0-9]+)/sprintf '%05d', $1/erg }
|
|
|
|
my @ver =
|
|
sort { num($b) cmp num($a) }
|
|
grep m{^(.+)/($VER)$} && $1 eq $base, keys %pages;
|
|
|
|
sub lnk($ver) {
|
|
my $v = $ver eq $base ? 'latest' : $ver =~ s{^.+/($VER)$}{$1}r =~ s/_/./rg;
|
|
$cur eq $ver ? "**$v**" : "[$v](/$ver)";
|
|
}
|
|
|
|
$links = 'Version: '.join(' / ', map lnk($_), $base, @ver)."\n\n" if @ver;
|
|
|
|
my $firstsec = 1;
|
|
while(<STDIN>) {
|
|
if ($firstsec && /^#/) {
|
|
$firstsec = 0;
|
|
print $links;
|
|
}
|
|
print;
|
|
};
|