forked from HPR/hpr_generator
		
	
		
			
				
	
	
		
			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
 | |
| }
 |