Archived
4
2
This repository has been archived on 2024-09-28. You can view files and clone it, but cannot push or open issues or pull requests.
hpr_generator/site-generator
Roan Horning 3d0ddbfe24
Configure database connection in config file
Pass the db configuration info to the page templates via the
template constants feature.
2022-06-29 10:42:10 -04:00

94 lines
1.7 KiB
Perl
Executable File

#!/usr/bin/perl
=head1 NAME
siteGenerator - HPR Site Generator
=head1 SYNOPSIS
siteGenerator [OPTION]... PAGE...
-v, --verbose use verbose mode
--help print this help message
Where I<PAGE> is a file name of a web page.
Examples:
Generate two specific pages:
siteGenerator index about
Generate the whole site:
siteGenerator ALL
=head1 DESCRIPTION
This is a site generator based upon the Perl Templates Toolkit.
=head1 AUTHOR
Roan Horning <roan.horning@no-spam.gmail.com>
=cut
use strict;
use warnings;
use Getopt::Long qw(:config auto_help);
use Pod::Usage;
use Config::Std;
use Template;
exit main();
sub main {
# Argument parsing
my $verbose;
GetOptions(
'verbose' => \$verbose,
) or pod2usage(1);
pod2usage(1) unless @ARGV;
my (@pages) = @ARGV;
# Load config file
read_config "site.cfg" => my %config;
my $tt = get_template_html($config{DBI});
generate_page($tt, $config{correspondents}{navigation}, $config{correspondents}{content});
return 0;
}
sub get_template_html (\%@) {
# For an HTML based Template file, define the
# template start and end tags to also function as
# HTML comments to make the template file valid HTML.
#
return Template->new({
INCLUDE_PATH => './templates',
EVAL_PERL => 1,
START_TAG => '<!--%',
END_TAG => '%-->',
CONSTANTS => {
driver => $_[0]{driver},
user => $_[0]{user},
password => $_[0]{password},
}
}) || die $Template::ERROR, "\n";
}
sub generate_page ($tt, $navigation, $content) {
my ($tt, $navigation, $content) = @_;
my $tt_vars = {
navigation => $navigation,
content => $content
};
$tt->process('page.tpl.html', $tt_vars)
|| die $tt->error(), "\n";
}