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`
 | 
						|
	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
 | 
						|
}
 |