Compare commits

..

6 Commits

Author SHA1 Message Date
1853715a19 Merge pull request '[I164] check for perl module dependencies' (#203) from I164_check-for-perl-module-dependencies into main
Reviewed-on: #203
2024-09-28 15:42:42 +00:00
0f57b99fbe
Add instructions for the dependency check script 2024-09-08 09:30:40 -04:00
48b3c51bb3
Update instructions for installing modules via CPAN 2024-09-08 09:08:23 -04:00
4e9f1457d5
Fix typos in module names 2024-09-08 09:05:34 -04:00
4ae854f5e1
Remove unused module import
The dbi sqlite module is not directly used in the site-generator code.
The module is called by template files. Removing it allows the main
code to be database independent.
2024-09-08 09:01:17 -04:00
af810c88bc
Add bash script to check Perl module dependencies 2024-09-07 16:51:55 -04:00
4 changed files with 90 additions and 5 deletions

View File

@ -41,8 +41,9 @@ 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 both the [make](https://www.gnu.org/software/make/manual/make.html) Make sure that the [gcc](https://www.gnu.org/software/gcc/),
command and the [cpan](https://perldoc.perl.org/CPAN) command are available. [make](https://www.gnu.org/software/make/manual/make.html),
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:
@ -51,9 +52,21 @@ 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

View File

@ -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 * Getopt::Long
* 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

View File

@ -122,7 +122,6 @@ 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;

73
utils/check-dependencies.sh Executable file
View File

@ -0,0 +1,73 @@
#!/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."