Local version is used if a global system version isn't found. Without this redirect, the error response from which is shown on the terminal, even though everything is OK.
185 lines
5.5 KiB
Bash
Executable File
185 lines
5.5 KiB
Bash
Executable File
#!/bin/bash -
|
|
#===============================================================================
|
|
#
|
|
# FILE: lib_utils.sh
|
|
#
|
|
# USAGE: ./lib_utils.sh
|
|
#
|
|
# DESCRIPTION: functions for scripts used to update local HPR installations
|
|
# using the HPR static site generator
|
|
#
|
|
# OPTIONS: ---
|
|
# REQUIREMENTS: mysql2sqlite (https://github.com/dumblob/mysql2sqlite)
|
|
# BUGS: ---
|
|
# NOTES: ---
|
|
# AUTHOR: Roan "Rho`n" Horning <roan.horning@gmail.com>
|
|
# CREATED: 02/26/2023 03:27:08 PM -5 UTC
|
|
# REVISION: ---
|
|
# LICENSE: GNU AGPLv3
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
#
|
|
#===============================================================================
|
|
|
|
set -o nounset # Treat unset variables as an error
|
|
|
|
#--- FUNCTION ----------------------------------------------------------------
|
|
# NAME: make_working_dir
|
|
# DESCRIPTION: Creates a local temporary working directory
|
|
# SEE: https://stackoverflow.com/questions/4632028/how-to-create-a-temporary-directory#answer-34676160
|
|
# PARAMETERS:
|
|
# RETURNS: The path to the working directory
|
|
#-------------------------------------------------------------------------------
|
|
function make_working_dir {
|
|
|
|
# the directory of the script
|
|
local DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
# the temp directory used, within $DIR
|
|
# omit the -p parameter to create a temporal directory in
|
|
# the default location
|
|
|
|
local WORK_DIR=`mktemp -d -p "$DIR"`
|
|
|
|
# check if tmp dir was created
|
|
if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
|
|
echo "Could not create temp dir"
|
|
exit 1
|
|
fi
|
|
echo $WORK_DIR
|
|
}
|
|
|
|
#--- FUNCTION ----------------------------------------------------------------
|
|
# NAME: clean_working_dir
|
|
# DESCRIPTION: Remove local temporary working directory
|
|
# PARAMETERS: WORK_DIR -- Temporay directory to be delted
|
|
# RETURNS:
|
|
#-------------------------------------------------------------------------------
|
|
function clean_working_dir {
|
|
|
|
if [[ -d $1 ]] && expr $1 : '.*/tmp.*' ; then
|
|
rm -rf $1
|
|
echo "Deleted temp working directory $1"
|
|
else
|
|
echo "Did not delete directory: $1"
|
|
echo "Not a temporary directory."
|
|
fi
|
|
|
|
}
|
|
|
|
#--- FUNCTION ----------------------------------------------------------------
|
|
# NAME: download_hpr_sql
|
|
# DESCRIPTION: Download the HPR SQL dump file into a working directory
|
|
# PARAMETERS:
|
|
# RETURNS:
|
|
#-------------------------------------------------------------------------------
|
|
function download_hpr_sql {
|
|
|
|
if [[ ! -d $1 ]] || ! expr $1 : '.*/tmp.*' ;
|
|
then
|
|
echo "Please provide the temporary directory when calling this function"
|
|
return 1
|
|
fi
|
|
|
|
local CURL=`which curl`
|
|
local WGET=`which wget`
|
|
local HPR_URL=https://www.hackerpublicradio.org/hpr.sql
|
|
|
|
if [ -f $1/hpr.sql ];
|
|
then
|
|
echo "Removing temporary hpr.sql"
|
|
rm $1/hpr.sql
|
|
else
|
|
echo "No temporary hpr.sql to remove"
|
|
fi
|
|
|
|
if [ "$CURL" != "" ];
|
|
then
|
|
curl $HPR_URL --output $1/hpr.sql
|
|
echo "Downloaded hpr.sql via curl"
|
|
elif [ "$WGET" != "" ];
|
|
then
|
|
wget --directory-prefix=$1 $HPR_URL
|
|
echo "Downloaded hpr.sql via wget"
|
|
else
|
|
echo "Could not download file. Please install either curl or wget."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
#--- FUNCTION ----------------------------------------------------------------
|
|
# NAME: make_hpr_sqlite_db
|
|
# DESCRIPTION: Converts the hpr sql file into an sqlite db file
|
|
# PARAMETERS:
|
|
# RETURNS:
|
|
#-------------------------------------------------------------------------------
|
|
function make_hpr_sqlite_db {
|
|
|
|
if [[ ! -d $1 ]] || ! expr $1 : '.*/tmp.*' ;
|
|
then
|
|
echo "Please provide the temporary directory when calling this function"
|
|
return 1
|
|
fi
|
|
|
|
local MYSQL2SQLITE=`which mysql2sqlite 2>/dev/null`
|
|
local BIN_PATH=""
|
|
|
|
if [ "$MYSQL2SQLITE" = "" ];
|
|
then
|
|
if [ $# -gt 1 ] && [ -z "$2" ];
|
|
then
|
|
BIN_PATH=$2
|
|
else
|
|
BIN_PATH=`find . -type f -name "mysql2sqlite" -print | head -1`
|
|
if [ "$BIN_PATH" != "" ];
|
|
then
|
|
BIN_PATH=${BIN_PATH/mysql2sqlite//}
|
|
else
|
|
echo "Could not find mysql2sqlite script."
|
|
return 1
|
|
fi
|
|
fi
|
|
fi
|
|
echo $BIN_PATH
|
|
|
|
if [ -f $1/hpr.db ];
|
|
then
|
|
rm $1/hpr.db
|
|
fi
|
|
|
|
# Remove lines from hpr.sql that mysql2sqlite can't handle
|
|
sed '/^DELIMITER ;;/,/^DELIMITER ;/d' < $1/hpr.sql > $1/hpr-sqlite.sql
|
|
|
|
${BIN_PATH}mysql2sqlite $1/hpr-sqlite.sql | sqlite3 $1/hpr.db
|
|
echo "Created hpr.db"
|
|
}
|
|
|
|
#--- FUNCTION ----------------------------------------------------------------
|
|
# NAME: copy_to_public_dir
|
|
# DESCRIPTION: Move HPR sql and db files to public website folder
|
|
# PARAMETERS:
|
|
# RETURNS:
|
|
#-------------------------------------------------------------------------------
|
|
function copy_to_public_dir {
|
|
|
|
if [ $# -gt 1 ] && [ ! -z "$1" ] && [ ! -z "$2" ];
|
|
then
|
|
cp $1/hpr.sql $2/hpr.sql
|
|
cp $1/hpr.db $2/hpr.db
|
|
return 0
|
|
else
|
|
echo "Bad arguments. Can't copy files to public directory."
|
|
fi
|
|
}
|