Peace/bin/generate_documentation.pl

68 lines
1.5 KiB
Perl

#!/usr/bin/env perl
use v5.30.0;
use strict;
use warnings;
use Data::Dumper;
use Path::Tiny qw/path/;
use Mojo::Template;
my $current_dir = path(__FILE__)->parent->parent->child('lib');
$current_dir->visit(
sub {
my ( $path, $state ) = @_;
if ( -f $path ) {
return if $path !~ /\.pm$/;
system mkdir => '-pv', 'doc/' . $path->parent;
system pod2html => $path,
'-o', 'doc/' . $path . '.html', '--htmldir',
$current_dir->child('./doc')->realpath, '--podpath', 'lib',
'--recurse';
}
},
{ recurse => 1 }
);
my $documentation_path = path(__FILE__)->parent->parent->child('doc');
my %modules;
$documentation_path->visit(
sub {
my ( $path, $state ) = @_;
if ( !-f $path ) {
return;
}
if ( $path !~ /\.pm\.html$/ ) {
return;
}
$modules{ $path =~ s{^.*/lib/}{}r =~ s/\.pm\.html$//r =~ s{/}{::}gr } =
''.$path=~s/doc\///r;
},
{ recurse => 1 },
);
my $mojo_template = Mojo::Template->new;
my $html = $mojo_template->render(<<'EOF', \%modules);
% my ($modules) = @_;
<html>
<head>
</head>
<body>
<h1>Welcome to the Peace documentation</h1>
<ul>
% for my $module (sort { $a cmp $b } keys %$modules) {
<li>
<a href="<%=$modules->{$module}%>"><%=$module%></a>
</li>
% }
</ul>
</body>
</html>
EOF
$documentation_path->child('index.html')->spew_utf8($html);