| 
									
										
										
										
											2022-06-28 05:25:36 -04:00
										 |  |  | #!/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; | 
					
						
							| 
									
										
										
										
											2022-06-28 10:46:52 -04:00
										 |  |  | use Template; | 
					
						
							| 
									
										
										
										
											2022-06-28 05:25:36 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-28 10:46:52 -04:00
										 |  |  | 	my $tt = get_template_html(); | 
					
						
							| 
									
										
										
										
											2022-06-29 00:48:50 -04:00
										 |  |  | 	generate_page($tt, $config{correspondents}{navigation}, $config{correspondents}{content}); | 
					
						
							| 
									
										
										
										
											2022-06-28 05:25:36 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-28 10:46:52 -04:00
										 |  |  | 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		 => '%-->', | 
					
						
							|  |  |  | 	}) || 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"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |