use Pod::Usage;
use XML::LibXML;
use XML::LibXSLT;
+use FindBin qw'$Bin';
my $canonical_url = 'https://www.exim.org/';
my $xml = XML::LibXML->new()->parse_file($xml_path) or die $!;
## Get the version number
- my $version = $xml->findvalue('/book/bookinfo/revhistory/revision/revnumber');
- die "Unable to get version number\n" unless defined $version && $version =~ /^\d+(\.\d+)*$/;
+ my $version = do {
+ my $version = $xml->findvalue('/book/bookinfo/revhistory/revision/revnumber');
+ die "Unable to get version number\n"
+ unless defined $version and $version =~ /^
+ (?<version>
+ \d+ # major
+ (?:\.\d+(?:\.\d+)?)? # (minor(.patch))
+ (?:\.\d+(?:\.\d+(?:\.\d+)?)?)? # (minor(.patch.(fixes)))
+ )
+ (?:-RC\d+)?$/x; # -RCX
+ $+{version};
+ };
## Prepend chapter filenames?
my $prepend_chapter = $type eq 'filter' ? 'filter_' : '';
## Parse arguments
sub parse_arguments {
- my %opt = ( spec => [], filter => [], help => 0, man => 0, web => 0, minify => 1, verbose => 0, localstatic => 0 );
+ my %opt = ( spec => [], filter => [], help => 0, man => 0, web => 0, minify => 1, verbose => 0, localstatic => 0, tmpl => "$Bin/../templates" );
GetOptions(
\%opt, 'help|h!', 'man!', 'web!', 'spec=s{1,}', 'filter=s{1,}',
'latest=s', 'tmpl=s', 'docroot=s', 'minify!', 'verbose!', 'localstatic!'
=head1 NAME
-gen.pl - Generate exim html documentation and website
+gen - Generate exim html documentation and website
=head1 SYNOPSIS
-gen.pl [options]
+gen [options]
Options:
--help display this help and exits
=head1 EXAMPLE
- script/gen.pl \
+ script/gen \
--web \
--spec docbook/*/spec.xml \
--filter docbook/*/filter.xml \