#!/bin/bash

#+++++++++++++++++++++++++++++++++++++++++++++++++++
# eSales Media Backup Script
#
# Author: Benjamin Roth
# Version: 18.0.3
#+++++++++++++++++++++++++++++++++++++++++++++++++++




##########################
#     CONFIG SECTION     #
##########################
SCRIPT=${BASH_SOURCE[o]}
SCRIPTPATH=`dirname $SCRIPT`/
INCLUDEPATH=${SCRIPTPATH}include/
CONFIGPATH=${SCRIPTPATH}jobs/

BACKUPPATH=${SCRIPTPATH}../backup/


#############################
#     UTILITY FUNCTIONS     #
#############################
function progress() {
	echo -n " ..."
	#ps ax | awk '{ print $1 }' | grep -w $$ > /dev/null
	while true
	do
		echo -n "."
		sleep 3
	done
}

function run() {
	val=$1
	if [ -f ${CONFIGPATH}${val} -a ${val} != "skeletton" ]
	then
		echo "Analyzing job $val..."
		cat ${CONFIGPATH}${val} |
		while IFS=$'\r\n' read LINE
		do
			if [ "$LINE" = "" ]
			then
				continue
			else
				LINE=`echo $LINE | sed 's/^\s*\(.*\) *$/\1/'`

				if [ "`echo $LINE | grep "^\s*[a-zA-Z0-9_]*::.*"`" != "" ]
				then
					DRIVER=`echo $LINE | sed 's/^\s*\([a-zA-Z0-9_]*\)::.*$/\1/'`
					if [ -f ${INCLUDEPATH}driver_${DRIVER} ]
					then
						echo -en "\tStarting process $DRIVER"
						progress &
						PROGRESSPID=$!
						trap 'kill $PROGRESSPID &> /dev/null; exit 1' 2 15
						# Load driver and execute
						msg=`. ${INCLUDEPATH}driver_${DRIVER} $LINE $BACKUPPATH $val`
						stat=$?
						kill $PROGRESSPID &> /dev/null
						if [ $stat -eq 0 ]
						then
							echo -n " OK"
							echo
							#echo -e "\t# ${msg}"
						else
							echo -n " ERROR"
							echo
							echo -e "\t# ${msg}"
						fi
					else
						echo -e "\tDriver $DRIVER not found. Check include dir for driver file."
					fi
				fi

			fi
		done
		echo "done"
	else
		if [ ${val} != "skeletton" ]
		then
			echo -e "\tConfig file $val not found."
		fi
	fi
}


###############
#     RUN     #
###############
if [ $1 ]
then
	run $1
else
	ls -1 $CONFIGPATH |
	while read val
	do
		run $val
	done
fi