#!/usr/local/bin/bash

if [ "$1" = -v ]
then
	verbose=1
	shift
else
	verbose=0
fi

PATH=${PATH}:/usr/local/bin:/usr/local/etc
export PATH

# ignore sigpipe!
trap "" PIPE

when="$1"
OK=1
case "$when" in
	daily.[12]) ;;
	weekly.[12]) ;;
	monthly.[12]) ;;
	*) OK=0 ;;
esac

if tty -s
then
	ONTTY=true
	set -x
else
	ONTTY=false
fi

if ! kbytes=$(expr $(Sinit && Sls -l "$DESTDIR"/backups/daily.1 | grep 'archive' | awk ' { print $4 }' | total) / 1024)
then
	echo Archive size computation failed 1>&2
	exit 1
fi

if [ "$OK" = 1 ]
then
	if ! Sinit > /dev/null 2>&1
	then
		echo Sinit failed 1>&2
		exit 1
	fi
	for filename in $(Sls -l /home/esmf.uci-esmf/backups/$when | grep ' archive.[0-9][0-9]*$' | sed 's/^.* \(archive.[0-9][0-9]*\)$/\1/')
	do
		if ! Sinit > /dev/null 2>&1
		then
			echo Sinit failed 1>&2
			exit 1
		fi
		if [ "$verbose" = 1 ]
		then
			echo "Getting file $filename" 1>&2
		fi
		case "2" in
			1)
				if ! Scat "/home/esmf.uci-esmf/backups/$when/$filename"
				then
					echo Scat "/home/esmf.uci-esmf/backups/$when/$filename" failed 1>&2
					exit 1
				fi
				;;
			2)
				if [ "$TMPDIR" = "" ]
				then
					TMPDIR=/tmp
				fi
				TMPFILE="/$TMPDIR/$filename.restore"
				rm -f "$TMPFILE"
				if ! Sget "/home/esmf.uci-esmf/backups/$when/$filename" "$TMPFILE"
				then
					echo Sget "/home/esmf.uci-esmf/backups/$when/$filename" failed 1>&2
					exit 1
				fi
				if ! cat "$TMPFILE"
				then
					echo cat "$TMPFILE" failed 1>&2
					exit 1
				fi
				if ! rm "$TMPFILE"
				then
					echo rm "$TMPFILE" failed 1>&2
					exit 1
				fi
				;;
		esac
		
	done
else
	echo 'Sorry, must give daily, weekly or monthly and which instance, EG:' 1>&2
	echo "$0 daily.2" 1>&2
	echo "$0 weekly.2" 1>&2
	echo "$0 monthly.1" 1>&2
	exit 1
fi | \
	if [ "$ONTTY" = true ]
	then
		reblock -e "$kbytes" $(expr 1024 \* 1024) 300
	else
		reblock -f $(expr 1024 \* 1024) 300
	fi