Compare commits
2 Commits
06601c5d20
...
kdmurrayhp
Author | SHA1 | Date | |
---|---|---|---|
|
cf687fe0db | ||
e0ef6c7613 |
@@ -41,9 +41,8 @@ apt install libconfig-std-perl \
|
|||||||
## Using CPAN to install the modules
|
## Using CPAN to install the modules
|
||||||
|
|
||||||
A cross platform method to install the needed modules is the Perl CPAN application.
|
A cross platform method to install the needed modules is the Perl CPAN application.
|
||||||
Make sure that the [gcc](https://www.gnu.org/software/gcc/),
|
Make sure both the [make](https://www.gnu.org/software/make/manual/make.html)
|
||||||
[make](https://www.gnu.org/software/make/manual/make.html),
|
command and the [cpan](https://perldoc.perl.org/CPAN) command are available.
|
||||||
and [cpan](https://perldoc.perl.org/CPAN) commands are available.
|
|
||||||
Install them using the operating system's package manager, or from source.
|
Install them using the operating system's package manager, or from source.
|
||||||
|
|
||||||
Run commands:
|
Run commands:
|
||||||
@@ -52,21 +51,9 @@ Run commands:
|
|||||||
cpan Config::Std
|
cpan Config::Std
|
||||||
cpan Template
|
cpan Template
|
||||||
cpan Template::Plugin::DBI
|
cpan Template::Plugin::DBI
|
||||||
cpan Template::Plugin::HTML::Strip
|
|
||||||
cpan DBD::SQLite
|
cpan DBD::SQLite
|
||||||
cpan Date::Calc
|
cpan Date::Calc
|
||||||
cpan Tie::DBI
|
cpan Tie::DBI
|
||||||
cpan Text:CSV_XS
|
|
||||||
```
|
|
||||||
|
|
||||||
## Testing for Perl module dependencies
|
|
||||||
|
|
||||||
A bash script is included in the utils directory that will list the Perl modules used by the site-generator and report whether the modules are installed on the current OS.
|
|
||||||
|
|
||||||
It can be run from any directory. To run from the utils directory:
|
|
||||||
|
|
||||||
```
|
|
||||||
./check-dependencies.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Create the HPR database
|
# Create the HPR database
|
||||||
|
@@ -25,7 +25,7 @@ Static web page generator for the Hacker Public Radio website.
|
|||||||
- ``GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';``
|
- ``GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';``
|
||||||
- ``GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';``
|
- ``GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';``
|
||||||
* Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
* Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
||||||
* Getopt::Long
|
* GetOpt
|
||||||
* Pod::Usage
|
* Pod::Usage
|
||||||
* Config::Std
|
* Config::Std
|
||||||
* Template
|
* Template
|
||||||
@@ -35,7 +35,7 @@ Static web page generator for the Hacker Public Radio website.
|
|||||||
* Template::Plugin::HTML::Strip
|
* Template::Plugin::HTML::Strip
|
||||||
* DBI
|
* DBI
|
||||||
* Tie::DBI
|
* Tie::DBI
|
||||||
* DBD::SQLite or DBD::mysql
|
* DBD::SQLite or DBD:mysql
|
||||||
* Date::Calc
|
* Date::Calc
|
||||||
* Text::CSV_XS
|
* Text::CSV_XS
|
||||||
* HTML::Entities
|
* HTML::Entities
|
||||||
@@ -72,8 +72,6 @@ and add the label "**Feature Request**".
|
|||||||
|
|
||||||
## Authors and acknowledgment
|
## Authors and acknowledgment
|
||||||
* Roan "Rho`n" Horning
|
* Roan "Rho`n" Horning
|
||||||
* Dave Morriss
|
|
||||||
* gordons
|
* gordons
|
||||||
* Ken Fallon
|
* Ken Fallon
|
||||||
* norrist
|
* norrist
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.0 KiB |
@@ -122,6 +122,7 @@ use Text::CSV_XS;
|
|||||||
use HTML::Entities qw(encode_entities);
|
use HTML::Entities qw(encode_entities);
|
||||||
use Date::Calc;
|
use Date::Calc;
|
||||||
use DBI;
|
use DBI;
|
||||||
|
use DBD::SQLite;
|
||||||
use Tie::DBI;
|
use Tie::DBI;
|
||||||
use Template;
|
use Template;
|
||||||
use Template::Plugin::Date;
|
use Template::Plugin::Date;
|
||||||
|
@@ -582,10 +582,9 @@
|
|||||||
|
|
||||||
<h1 id="reserve_queue">Feed the reserve queue<a href="<!--% absolute_url(baseurl,'about.html#reserve_queue') %-->">.</a></h1>
|
<h1 id="reserve_queue">Feed the reserve queue<a href="<!--% absolute_url(baseurl,'about.html#reserve_queue') %-->">.</a></h1>
|
||||||
<p>
|
<p>
|
||||||
The reserve queue is intended only to be used in the cases where there is still a gap in the schedule one week prior to release.
|
The reserve queue is intended only to be used in the cases where there is still a gap in the schedule 24 hours prior to release.
|
||||||
This was known as the emergency queue, but now can also be used when the hosts don't care when the shows are scheduled.
|
This was known as the emergency queue, but now can also be used when the hosts don't care when the shows are scheduled.
|
||||||
They will be used on a first come first go basis, when there is no conflict with the scheduling guidelines.
|
They will be used on a first come first go basis, when there is no conflict with the scheduling guidelines.
|
||||||
These shows contain a message alerting listeners to the fact that we had free slots that were not filled.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
@@ -593,12 +592,11 @@
|
|||||||
<h1 id="scheduling_guidelines">Scheduling Guidelines</h1>
|
<h1 id="scheduling_guidelines">Scheduling Guidelines</h1>
|
||||||
<ol>
|
<ol>
|
||||||
<li>You must have your audio recording ready to upload <strong>before</strong> you pick a slot.</li>
|
<li>You must have your audio recording ready to upload <strong>before</strong> you pick a slot.</li>
|
||||||
<li>New hosts, Interviews, and other time critical shows should use the first free slot.</li>
|
|
||||||
<li>Always try and fill any free slots that are available in the upcoming two weeks.</li>
|
<li>Always try and fill any free slots that are available in the upcoming two weeks.</li>
|
||||||
<li>When the queue is filling up then leave some slots free for new contributors.</li>
|
<li>If the queue is filling up then please consider leaving some slots free for new contributors.</li>
|
||||||
<li>Post non urgent shows into the first empty week.</li>
|
<li>If you have a non urgent show then find a empty week and schedule it then.</li>
|
||||||
<li>If you are uploading a series of shows then post them one every two weeks.</li>
|
<li>If you are uploading a series of shows, consider scheduling one every two weeks.</li>
|
||||||
<li>If you have a non urgent show that is timeless, then add it to the <a href="<!--% absolute_url(baseurl,'about.html#reserve_queue') %-->">Reserve Queue</a>.</li>
|
<li>Interviews may be released sooner.</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></h1>
|
<h1><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comment_<!--% item.comment_id %-->"><!--% item.comment_author_name %--> says</a>: <!--% item.comment_title %--></h1>
|
||||||
<p><small>Posted at <!--% item.comment_timestamp %--> relating to the show <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html">hpr<!--% item.eps_id %--></a> which was released on <!--% item.episode_date %--> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a> entitled <em><!--% item.episode_title %--></em></small>
|
<p><small>Posted at <!--% item.comment_timestamp %--> relating to the show <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html">hpr<!--% item.eps_id %--></a> which was released on <!--% item.episode_date %--> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a> entitled <em><!--% item.episode_title %--></em></small>
|
||||||
</p>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
@@ -3,10 +3,15 @@
|
|||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
<!--% PROCESS "queries-correspondent-${constants.database}.tpl.html" %-->
|
<!--% PROCESS "queries-correspondent-${constants.database}.tpl.html" %-->
|
||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
|
<!--% query_hpr_show_count = DBI.prepare('
|
||||||
|
SELECT id
|
||||||
|
FROM eps
|
||||||
|
WHERE eps.hostid = ?
|
||||||
|
')
|
||||||
|
%-->
|
||||||
<!--% results_hpr_shows = DBI.prepare(query_hpr_shows)
|
<!--% results_hpr_shows = DBI.prepare(query_hpr_shows)
|
||||||
%-->
|
%-->
|
||||||
<!--% results_hpr_show_count = DBI.prepare(query_hpr_show_count) %-->
|
<!--% hpr_shows_to_count = query_hpr_show_count.execute(id); %-->
|
||||||
<!--% hpr_shows_to_count = results_hpr_show_count.execute(id); %-->
|
|
||||||
<!--% hpr_shows = results_hpr_shows.execute(id); %-->
|
<!--% hpr_shows = results_hpr_shows.execute(id); %-->
|
||||||
<!--% hpr_show_count = 0 %-->
|
<!--% hpr_show_count = 0 %-->
|
||||||
<!--% FOREACH show IN hpr_shows_to_count %-->
|
<!--% FOREACH show IN hpr_shows_to_count %-->
|
||||||
|
@@ -110,18 +110,9 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
|||||||
</tr>
|
</tr>
|
||||||
<!-- . -->
|
<!-- . -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>Who is the <strong>host</strong> of this show?</td>
|
<td>What is the <strong>HOST_ID</strong> for the host of this show?</td>
|
||||||
<td>
|
<td>
|
||||||
<select required name="hostid" id="hostid">
|
<input required type="text" name="hostid" size="20" maxlength="5" placeholder="Type the host number"></td>
|
||||||
<option value="Spammer" selected="selected">Spammer</option>
|
|
||||||
<option value="Spammer">Linus Torvalds</option>
|
|
||||||
<option value="Spammer">Marie Curie</option>
|
|
||||||
<option value="<!--% episode.hostid %-->"><!--% episode.host %--></option>
|
|
||||||
<option value="Spammer">Alan Turing</option>
|
|
||||||
<option value="Spammer">Terry Pratchett</option>
|
|
||||||
<option value="Spammer">Yuri Gagarin</option>
|
|
||||||
</select>
|
|
||||||
<td>
|
|
||||||
<td>
|
<td>
|
||||||
<!-- . -->
|
<!-- . -->
|
||||||
<tr>
|
<tr>
|
||||||
|
@@ -4,27 +4,27 @@
|
|||||||
<!--% PERL %-->
|
<!--% PERL %-->
|
||||||
$Template::Stash::PRIVATE = undef; # Allow . in tag
|
$Template::Stash::PRIVATE = undef; # Allow . in tag
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% USE String %-->
|
|
||||||
<!--% uniq_tag_count = 0 %-->
|
<!--% uniq_tag_count = 0 %-->
|
||||||
|
<!--% comma_re = '(?x)(?:^|,\s*)(?:"((?>[^"]*)(?:""[^"]*)*)"|([^",]*))'; %-->
|
||||||
|
<!--# 'Moka5,interview, "computer science"' -->
|
||||||
<!--% FOREACH episode IN DBI.query(query_tags);
|
<!--% FOREACH episode IN DBI.query(query_tags);
|
||||||
ep_id = episode.id;
|
ep_id = episode.id;
|
||||||
ep_tags = episode.tags;
|
ep_tags = episode.tags;
|
||||||
FOREACH tag_str IN ep_tags.csv_parse;
|
FOREACH tag_str IN ep_tags.split(comma_re);
|
||||||
NEXT UNLESS tag_str;
|
NEXT UNLESS tag_str;
|
||||||
NEXT IF tag_str == '';
|
NEXT IF tag_str == '';
|
||||||
tag = tag_str.lower;
|
tag = tag_str.lower;
|
||||||
tag_index = String.new(tag).push('_');
|
|
||||||
first_char = tag.substr(0,1);
|
first_char = tag.substr(0,1);
|
||||||
IF first_char == '.';
|
IF first_char == '.';
|
||||||
first_char = '.'; # Unicode .
|
first_char = '.'; # Unicode .
|
||||||
END;
|
END;
|
||||||
IF all_tags.${first_char}.exists(tag_index);
|
IF all_tags.${first_char}.exists(tag);
|
||||||
all_tags.${first_char}.${tag_index}.count = all_tags.${first_char}.${tag_index}.count + 1;
|
all_tags.${first_char}.${tag}.count = all_tags.${first_char}.${tag}.count + 1;
|
||||||
all_tags.${first_char}.${tag_index}.urls.push(ep_id);
|
all_tags.${first_char}.${tag}.urls.push(ep_id);
|
||||||
ELSE;
|
ELSE;
|
||||||
all_tags.${first_char}.${tag_index}.count = 1;
|
all_tags.${first_char}.${tag}.count = 1;
|
||||||
uniq_tag_count = uniq_tag_count + 1;
|
uniq_tag_count = uniq_tag_count + 1;
|
||||||
all_tags.${first_char}.${tag_index}.urls = [ep_id];
|
all_tags.${first_char}.${tag}.urls = [ep_id];
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
END %-->
|
END %-->
|
||||||
@@ -53,7 +53,7 @@ END %-->
|
|||||||
<ul class="columns3">
|
<ul class="columns3">
|
||||||
<!--% FOREACH first_char IN all_first %-->
|
<!--% FOREACH first_char IN all_first %-->
|
||||||
<!--% IF all_tags.${first_char} %-->
|
<!--% IF all_tags.${first_char} %-->
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% tag_to_id(String.new(all_tags.${first_char}.keys.sort.first).chop) %-->"><strong><!--% first_char %--></strong></a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% all_tags.${first_char}.keys.sort.first %-->"><strong><!--% first_char %--></strong></a></li>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
</ul>
|
</ul>
|
||||||
@@ -63,12 +63,11 @@ END %-->
|
|||||||
<p class="ralign"><a href="<!--% absolute_path(baseurl) %-->tags.html#TOP">↑ Go to index</a></p>
|
<p class="ralign"><a href="<!--% absolute_path(baseurl) %-->tags.html#TOP">↑ Go to index</a></p>
|
||||||
<h3>Tags beginning with '<!--% first_char %-->'</h3>
|
<h3>Tags beginning with '<!--% first_char %-->'</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<!--% FOREACH tag_index IN all_tags.${first_char}.keys.sort %-->
|
<!--% FOREACH tag IN all_tags.${first_char}.keys.sort %-->
|
||||||
<!--% tag = String.new(tag_index).chop; tag_id = String.new(tag_index).chop; %-->
|
|
||||||
<li>
|
<li>
|
||||||
<a id="<!--% tag_to_id(tag_id) %-->"><strong><!--% tag %--></strong></a>:
|
<a id="<!--% tag %-->"><strong><!--% tag %--></strong></a>:
|
||||||
<!--% ep_links = [] %-->
|
<!--% ep_links = [] %-->
|
||||||
<!--% FOREACH ep_id IN all_tags.${first_char}.${tag_index}.urls.nsort;
|
<!--% FOREACH ep_id IN all_tags.${first_char}.${tag}.urls.nsort;
|
||||||
ep_links.push("<a href=\"${absolute_path(baseurl)}eps/hpr" _ zero_pad_left(ep_id) _ '/index.html"'
|
ep_links.push("<a href=\"${absolute_path(baseurl)}eps/hpr" _ zero_pad_left(ep_id) _ '/index.html"'
|
||||||
' target="_blank" aria-label="' _ tag _
|
' target="_blank" aria-label="' _ tag _
|
||||||
' - show ' _ ep_id _ '">' _ ep_id _ '</a>');
|
' - show ' _ ep_id _ '">' _ ep_id _ '</a>');
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<!--% query_hpr_shows = '
|
<!--% query_hpr_shows = '
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
eps.date, eps.license, eps.duration,
|
eps.date, eps.license, eps.duration,
|
||||||
@@ -16,9 +16,3 @@
|
|||||||
ORDER BY eps.id DESC
|
ORDER BY eps.id DESC
|
||||||
'
|
'
|
||||||
%-->
|
%-->
|
||||||
<!--% query_hpr_show_count = '
|
|
||||||
SELECT id
|
|
||||||
FROM eps
|
|
||||||
WHERE eps.hostid = ? AND eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
|
|
||||||
'
|
|
||||||
%-->
|
|
||||||
|
@@ -16,9 +16,3 @@
|
|||||||
ORDER BY eps.id + 0 DESC
|
ORDER BY eps.id + 0 DESC
|
||||||
'
|
'
|
||||||
%-->
|
%-->
|
||||||
<!--% query_hpr_show_count = '
|
|
||||||
SELECT id
|
|
||||||
FROM eps
|
|
||||||
WHERE eps.hostid = ? AND eps.date < date(\'now\', \'+1 days\')
|
|
||||||
'
|
|
||||||
%-->
|
|
||||||
|
@@ -14,7 +14,7 @@ from the series <em><a href="<!--% baseurl %-->series/<!--% zero_pad_left(series
|
|||||||
<!--% MACRO display_tags(tags) BLOCK %-->
|
<!--% MACRO display_tags(tags) BLOCK %-->
|
||||||
<span><label>Tags:</label> <em>
|
<span><label>Tags:</label> <em>
|
||||||
<!--% FOREACH tag IN tags.csv_parse %-->
|
<!--% FOREACH tag IN tags.csv_parse %-->
|
||||||
<a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% tag_to_id(tag) %-->"><!--% tag %--></a><!--% IF loop.count == loop.size %-->.<!--% ELSE %-->,<!--% END %-->
|
<a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% tag.lower %-->"><!--% tag %--></a><!--% IF loop.count == loop.size %-->.<!--% ELSE %-->,<!--% END %-->
|
||||||
<!--% END %--></em>
|
<!--% END %--></em>
|
||||||
</span>
|
</span>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
@@ -49,15 +49,6 @@
|
|||||||
<!--% iso8601_date.format(date_to_format) %-->
|
<!--% iso8601_date.format(date_to_format) %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO tag_to_id(tag, is_index) BLOCK %-->
|
|
||||||
<!--% tag = tag.replace('\s+','_') %-->
|
|
||||||
<!--% IF is_index %-->
|
|
||||||
<!--% tag.upper %-->
|
|
||||||
<!--% ELSE %-->
|
|
||||||
<!--% tag.lower %-->
|
|
||||||
<!--% END %-->
|
|
||||||
<!--% END %-->
|
|
||||||
|
|
||||||
<!--% MACRO absolute_url(base, path) BLOCK %-->
|
<!--% MACRO absolute_url(base, path) BLOCK %-->
|
||||||
<!--% UNLESS base.empty %-->
|
<!--% UNLESS base.empty %-->
|
||||||
<!--% UNLESS base.substr(-1) == '/' %-->
|
<!--% UNLESS base.substr(-1) == '/' %-->
|
||||||
|
@@ -1,73 +0,0 @@
|
|||||||
#!/bin/bash -
|
|
||||||
#===============================================================================
|
|
||||||
#
|
|
||||||
# FILE: check-dependencies.sh
|
|
||||||
#
|
|
||||||
# USAGE: ./check-dependencies.sh
|
|
||||||
#
|
|
||||||
# DESCRIPTION: Check that Perl module dependencies for the hpr_generator
|
|
||||||
# are installed.
|
|
||||||
#
|
|
||||||
# OPTIONS: ---
|
|
||||||
# REQUIREMENTS: ---
|
|
||||||
# BUGS: ---
|
|
||||||
# NOTES: ---
|
|
||||||
# AUTHOR: Roan "Rho`n" Horning (roan.horning@gmail.com)
|
|
||||||
# ORGANIZATION:
|
|
||||||
# CREATED: 09/05/2024 09:55:00 PM
|
|
||||||
# REVISION: ---
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
set -o nounset # Treat unset variables as an error
|
|
||||||
|
|
||||||
#--- FUNCTION ----------------------------------------------------------------
|
|
||||||
# NAME: is_module_installed
|
|
||||||
# DESCRIPTION: Tests if the supplied module is found on the system
|
|
||||||
# PARAMETERS: Name of the denpendent Perl module
|
|
||||||
# RETURNS: 0 if not found, 1 if found
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
function is_module_installed {
|
|
||||||
HR="----------------------"
|
|
||||||
perl -e "use ${1} "
|
|
||||||
if [ $? -ne 0 ]
|
|
||||||
then
|
|
||||||
echo ${HR}
|
|
||||||
else
|
|
||||||
echo "Found module ${1}"
|
|
||||||
echo ${HR}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
MODULES=( \
|
|
||||||
"Getopt::Long" \
|
|
||||||
"Pod::Usage" \
|
|
||||||
"Config::Std" \
|
|
||||||
"Template" \
|
|
||||||
"Template::Plugin::File" \
|
|
||||||
"Template::Plugin::DBI" \
|
|
||||||
"Template::Plugin::HTML::Strip" \
|
|
||||||
"DBI" \
|
|
||||||
"Tie::DBI" \
|
|
||||||
"DBD::SQLite" \
|
|
||||||
"DBD::mysql" \
|
|
||||||
"Date::Calc" \
|
|
||||||
"Text::CSV_XS" \
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "The following modules must be installed for the site-generator to function: "
|
|
||||||
for module in "${MODULES[@]}"
|
|
||||||
do
|
|
||||||
echo "* ${module}"
|
|
||||||
done
|
|
||||||
echo "When MySQL is used, the DBD:mysql module is required (otherwise it is optional)"
|
|
||||||
echo "When SQLite is used, then the DBD:SQLite module is required (otherwise it is optional)"
|
|
||||||
|
|
||||||
echo "Scanning for modules ..."
|
|
||||||
echo "----------------------"
|
|
||||||
|
|
||||||
for module in "${MODULES[@]}"
|
|
||||||
do
|
|
||||||
is_module_installed "${module}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Finished scanning."
|
|
Reference in New Issue
Block a user