#!/bin/sh
# /etc/init.d/fwinstall_resume
#
### BEGIN INIT INFO
# Provides:          fwinstall_resume
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: fwinstall_resume
# Description:       fwinstall_resume tool
### END INIT INFO

#set -x
RESUME_STEPS="/var/lib/smart/resume.install"

case "$1" in
  start) 
		if [ -f ${RESUME_STEPS} ]; then
			CMD=$(head -n 1 ${RESUME_STEPS})
			
			echo "Cleaning Database Locks"
			rm -f /var/lib/rpm/__db*      # if we are resuming an install we cant trust any of our database locks, remove and recreate

			echo "Rebuilding Database"
			rpm -v --rebuilddb  #this will take a while
			
			echo "Resuming Firmware Install from: ${CMD}"
			/etc/init.d/fwinstall ${CMD}
		fi


		if [ -f /etc/init.d/validate_oem ]; then
			/etc/init.d/validate_oem start
		fi

		for FOLDER in $(ls -d /media/* 2> /dev/null)
		do
		echo "Scanning $FOLDER for autoupdates..."
		if [ -d ${FOLDER}/Raven/AutoUpdates ]; then
			
			echo "Clearing cache"
			rm -rf ${FOLDER}/Raven/AutoUpdates/temp
			mkdir ${FOLDER}/Raven/AutoUpdates/temp

			INSTALLERFILE=`ls ${FOLDER}/Raven/AutoUpdates/*.zip | sort -r | head -n1`

			echo "Found installer $INSTALLERFILE"
		
			#no installer found
			if [ "${INSTALLERFILE}" = "" ]; then
				exit 0
			fi
			#compare to current version
			CURRENT_VERSION=`rpm -qi packagegroup-fishspear | grep Version | awk '{print $3}'`

			FOUND=`echo ${INSTALLERFILE} | grep ${CURRENT_VERSION}`
			if [ "${FOUND}" ]; then
				exit 0
			fi
		
			#decompress
			echo "Versions Differ.  Installing"
		
        	echo "---Auto Update Beginning---" > /dev/tty0
            echo "This may take several minutes, Please wait..." > /dev/tty0

			echo "Extracting ${INSTALLERFILE}"
            
            echo "Extracting ${INSTALLERFILE}" > /dev/tty0
			unzip ${INSTALLERFILE} -d ${FOLDER}/Raven/AutoUpdates/temp
			if [ $? -ne 0 ]; then
				echo "Invalid zip file"
                echo "Invalid zip file" > /dev/tty0
				exit 1
			fi
		
			sync
		
            PLATFORMFOLDER=`find ${FOLDER}/Raven/AutoUpdates/temp -name $(cat /etc/raven/platform)`

            REVERT_SCRIPT=""
            if [ "${PLATFORMFOLDER}" = "" ]; then
            	REVERT_SCRIPT=`find ${FOLDER}/Raven/AutoUpdates/temp -name revertscript.xml`
            else
                REVERT_SCRIPT=`find ${PLATFORMFOLDER} -name revertscript.xml`           
            fi
            
            if [ "${REVERT_SCRIPT}" = "" ]; then
                echo "Revert Script Missing - Skipping install"
                echo "Revert Script Missing - Skipping install" > /dev/tty0
                exit 0
            fi
            
            INSTALL_ARCHIVE=""
            if [ "${PLATFORMFOLDER}" = "" ]; then
            	INSTALL_ARCHIVE=`find ${FOLDER}/Raven/AutoUpdates/temp -name '*.zip'`
            else
                INSTALL_ARCHIVE=`find ${PLATFORMFOLDER} -name '*.zip'`
            fi

            if [ "${INSTALL_ARCHIVE}" = "" ]; then
                echo "Install Archive Missing - Skipping install"
                echo  "Install Archive Missing - Skipping install" > /dev/tty0
                exit 0
            fi
			
		
			echo "Moving scripts: ${REVERT_SCRIPT}"
			cp ${REVERT_SCRIPT} /var/lib/smart/revertscript.xml
			cp ${REVERT_SCRIPT} /usr/bin/raven/revertscript.xml
		
			sync
            
            echo  "Starting Firmware Install" > /dev/tty0
            
			echo "Starting fwinstall ${INSTALL_ARCHIVE}"
			/etc/init.d/fwinstall start ${INSTALL_ARCHIVE}
		fi
		done	
    ;;
  *)
    echo "Usage: /etc/init.d/$NAME {start}"
    exit 1
    ;;
esac

exit 0
