#!/bin/sh

TEMP_DIR="/home/main-user/tmp"
LOGFILE="$TEMP_DIR/OS-Upgrade.log"

installlog () {
	echo $1 >> $LOGFILE
	echo $1 
}

checkerror () {
if [ "$1" -ne "0" ]; then
	installlog "Error $1";
	miura-msd --stop
	cp $LOGFILE /mnt/vfat/
	cp $LOGFILE /home/main-user/MPItempfiles/
	rm -rf $TEMP_DIR
	exit $1;
fi
}

if [ -f /usr/local/main-user/install ]; then miura-auth --remove /usr/local/main-user/install; fi

if [ ! -d $TEMP_DIR ]; then
	echo 'creating temp directory'
	mkdir $TEMP_DIR
else
	echo 'temp directory already exists'
fi

if [ -f /mnt/vfat/M000-*OSUPDATE-V[[:digit:]]*.tar.gz ]; then
	# File transferred via MSD
	installlog "OS-Upgrade Script Archive detected on MSD, extracting"
	tar -C $TEMP_DIR -zxvf /mnt/vfat/M000-*OSUPDATE-V[[:digit:]]*.tar.gz
	rm -rf /mnt/vfat/M000-*OSUPDATE-V[[:digit:]]*
	if [ -f /mnt/vfat/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz ]; then
		installlog 'Extracting TESTOS Archive'
		tar -C $TEMP_DIR -zxvf /mnt/vfat/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz
		rm /mnt/vfat/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz
	elif [ -f /mnt/vfat/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz ]; then
		installlog 'Extracting DEVOS Archive'
		tar -C $TEMP_DIR -zxvf /mnt/vfat/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz
		rm /mnt/vfat/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz
	elif [ -f /mnt/vfat/M000-OS-V[[:digit:]]*.tar.gz ]; then
		installlog 'Extracting OS Archive'
		tar -C $TEMP_DIR -zxvf /mnt/vfat/M000-OS-V[[:digit:]]*.tar.gz
		rm /mnt/vfat/M000-OS-V[[:digit:]]*.tar.gz
	fi
elif [ -f /home/main-user/MPItempfiles/M000-*OSUPDATE-V[[:digit:]]*.tar.gz ]; then
	# File tranferred via MPI
	installlog "OS-Upgrade Script Archive detected in MPI, extracting"
	tar -C $TEMP_DIR -zxvf /home/main-user/MPItempfiles/M000-*OSUPDATE-V[[:digit:]]*.tar.gz
	rm -rf /home/main-user/MPItempfiles/M000-*OSUPDATE-V[[:digit:]]*
	if [ -f /home/main-user/MPItempfiles/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz ]; then
		installlog 'Extracting TESTOS Archive'
		tar -C $TEMP_DIR -zxvf /home/main-user/MPItempfiles/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz
		rm /home/main-user/MPItempfiles/M000-TESTOS-V[[:digit:][:upper:]]*.tar.gz
	elif [ -f /home/main-user/MPItempfiles/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz ]; then
		installlog 'Extracting DEVOS Archive'
		tar -C $TEMP_DIR -zxvf /home/main-user/MPItempfiles/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz
		rm /home/main-user/MPItempfiles/M000-DEVOS-V[[:digit:][:upper:]]*.tar.gz
	elif [ -f /home/main-user/MPItempfiles/M000-OS-V[[:digit:]]*.tar.gz ]; then
		installlog 'Extracting OS Archive'
		tar -C $TEMP_DIR -zxvf /home/main-user/MPItempfiles/M000-OS-V[[:digit:]]*.tar.gz
		rm /home/main-user/MPItempfiles/M000-OS-V[[:digit:]]*.tar.gz
	fi
else
	installlog 'Miura-*OS-Upgrade-Vx-x.tar.gz not found (or multiple archives)'
fi

installlog 'Moving upgrade files'
mv $TEMP_DIR/M000-*OSUPDATE-V[[:digit:]]*/* $TEMP_DIR
mv $TEMP_DIR/M000-TESTOS-V[[:digit:][:upper:]]*/* $TEMP_DIR
mv $TEMP_DIR/M000-DEVOS-V[[:digit:][:upper:]]*/* $TEMP_DIR
mv $TEMP_DIR/M000-OS-V[[:digit:]]*/* $TEMP_DIR

if [ -f $TEMP_DIR/install ]; then
	installlog 'Attempting upgrade'

	# Backup MPI start script
	if [ -f /usr/local/main-user/start ]; then
		miura-auth --rename /usr/local/main-user/start /usr/local/main-user/_start
	fi
	miura-auth --install $TEMP_DIR/start /usr/local/main-user/start

	# Backup miura-display if it exists
	if [ -f /usr/local/main-user/miura-display ]; then
		miura-auth --rename /usr/local/main-user/miura-display /usr/local/main-user/_miura-display
	fi
	miura-auth --install $TEMP_DIR/miura-display /usr/local/main-user/miura-display

	cat /proc/cpuinfo >> $LOGFILE
	echo cat /proc/cpuinfo >> $LOGFILE

	if cat /proc/cpuinfo | grep TESTOS; then
		installlog 'Attempting to upgrade TESTOS'
		miura-auth --update-os $TEMP_DIR/M000-TESTOS-V*.mlf
		checkerror $?
		sleep 10
	elif cat /proc/cpuinfo | grep DEVOS; then
		installlog 'Attempting to upgrade DEVOS'
		miura-auth --update-os $TEMP_DIR/M000-DEVOS-V*.mlf
		checkerror $?
		sleep 10
	elif cat /proc/cpuinfo | grep OS; then
		installlog 'Attempting to upgrade OS'
		miura-auth --update-os $TEMP_DIR/M000-OS-V*.mlf
		checkerror $?
		sleep 10
	fi
fi

installlog 'OS Upgrade failed.'

# Restore MPI start script
if [ -f /usr/local/main-user/_start ]; then
	miura-auth --remove /usr/local/main-user/start
	miura-auth --rename /usr/local/main-user/_start /usr/local/main-user/start
fi
cp $LOGFILE /mnt/vfat/
cp $LOGFILE /home/main-user/MPItempfiles/
rm -rf $TEMP_DIR
exit 99

