#!/bin/bash

MAXCACHE=120000000
MAILTO=your@email.here
LOGROOT=/data/Homeautomation/logs
#LOGROOT=/tmp/logs
CACHE=$LOGROOT/cache
PERSISTENT=$LOGROOT/persistent
ARCHIVE=$LOGROOT/archive

#
# make cache persistent
#
persist() {
	FILESPEC=$1
	echo " Persisting $1..."
 	cp $CACHE/$FILESPEC $PERSISTENT
	return 0
}

#
# make cache persistent
# move persistent logs to archive
# retain only current day's entries in cache
#
archive() {
	FILESPEC=$1
	persist $FILESPEC
	cd $PERSISTENT && (
	echo " Archiving $FILESPEC..."
	SUFFIX=`date +%Y%m%d%H%M%S`
        for p in $FILESPEC; do
		echo "   $p"
		LAST=`/usr/bin/tail -n 1 $p | cut -b 1-10`
		a=$ARCHIVE/$p-$SUFFIX
		c=$CACHE/$p
		/bin/mv $p $a
		/usr/bin/grep "^$LAST" $a > $p
		/usr/bin/bzip2 $a
        done )
	return 0
}

#
# main program
#
echo "Log maintenance"

if [ $# -eq 1 ]; then
	COMMAND=$1
else 
	COMMAND="maintain"
fi	
echo "Action: $COMMAND"

case "$COMMAND" in
	"maintain")
		USAGE=`/usr/bin/du -sb $CACHE | /usr/bin/cut -f 1`
		echo " Disk usage is $USAGE"
		if [ $USAGE -gt $MAXCACHE ]; then
			archive '*.log'
			mail -s "Notice: Homeautomation logs archived (disk usage was $USAGE)." $MAILTO < /dev/null
		else
			persist '*.log'
		fi
		;;
	"archive")
		archive '*.log'
		;;
	"persist")
		persist '*.log'
		;;
	"reset")
		archive fhem.log
		echo " Populating cache..."
		cp $PERSISTENT/*.log $CACHE
		rm -f $CACHE/fhem.log
		;;
esac	


