forked from rho_n/hpr_generator
94 lines
1.7 KiB
Perl
Executable File
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{root_template}{content}, $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 {
|
|
my ($tt, $page, $navigation, $content) = @_;
|
|
my $tt_vars = {
|
|
navigation => $navigation,
|
|
content => $content
|
|
};
|
|
|
|
$tt->process($page, $tt_vars)
|
|
|| die $tt->error(), "\n";
|
|
|
|
}
|
|
|