diff --git a/site-generator b/site-generator index 61b515b..1171443 100755 --- a/site-generator +++ b/site-generator @@ -8,12 +8,13 @@ site-generator [OPTION]... PAGE|PAGE=... - -a, --all generate all pages defined in configuration file - -l, --list print list of configured pages - -p, --preview print generated pages to standard out - -q, --quiet suppress progress information while generating pages - -v, --verbose print extended progress information while generating pages - --help print this help message + -a, --all generate all pages defined in configuration file + -c, --configure path to configuration file + -l, --list print list of configured pages + -p, --preview print generated pages to standard out + -q, --quiet suppress progress information while generating pages + -v, --verbose print extended progress information while generating pages + --help print this help message Where I is a file name of a web page or the special I (to generate all pages). @@ -109,15 +110,17 @@ sub main { # Argument parsing my $all; + my $configuration_path; my $preview; my $verbose; my $quiet; GetOptions( - 'all' => \$all, - 'list' => \&print_available_pages, - 'preview' => \$preview, - 'verbose' => \$verbose, - 'quiet' => \$quiet, + 'all' => \$all, + 'configuration=s' => \$configuration_path, + 'list' => \&print_available_pages, + 'preview' => \$preview, + 'verbose' => \$verbose, + 'quiet' => \$quiet, ) or pod2usage(1); pod2usage(1) unless @ARGV || $all; my (@page_args) = @ARGV; @@ -126,10 +129,21 @@ sub main { $verbose = 'quiet'; }; - # Load config file - read_config "site.cfg" => my %config; + if (!$configuration_path) { + $configuration_path = "site.cfg"; + } - my $tt = get_template_html($config{DBI}); + my %config; + if ( -f $configuration_path ) { + # Load config file + read_config $configuration_path => %config; + } + else { + print STDOUT "Could not read configuration file: $configuration_path\n"; + exit 1; + } + + my $tt = get_template_html($config{DBI}, $config{app_paths}); # If command line option all is set, parse configuration file # for all pages @@ -140,7 +154,7 @@ sub main { # from the generated list of pages. @page_args= grep { $_ ne 'DBI' } @page_args; @page_args= grep { $_ ne 'root_template' } @page_args; - @page_args= grep { $_ ne 'media_hostname' } @page_args; + @page_args= grep { $_ ne 'app_paths' } @page_args; }; foreach my $page_arg (@page_args) { @@ -193,8 +207,8 @@ sub get_template_html (\%@) { # HTML comments to make the template file valid HTML. # return Template->new({ - INCLUDE_PATH => './templates', - OUTPUT_PATH => './public_html', + INCLUDE_PATH => $_[1]{templates_path}, + OUTPUT_PATH => $_[1]{output_path}, EVAL_PERL => 1, START_TAG => '', diff --git a/site.cfg b/site.cfg index cc5c037..aefadb2 100644 --- a/site.cfg +++ b/site.cfg @@ -13,6 +13,11 @@ #user: hpr-generator (Suggested user with read-only privileges) #password: ********* (Password for user) +# Configure the location of the templates and the generated HTML +[app_paths] +templates_path: ./templates +output_path: ./public_html + # Configure the root template page which pulls in the navigation and # content templates used by each page. An optional baseurl property may # be defined. This is useful when opening files directly from local