#!/bin/bash

######################################################################################
#parse command line arguments
until [ -z "$1" ]
do
  CURARG=$1
  case "$CURARG" in
    "--reboot") MYRESTART=1  ;;
    "--shutdown") MYSHUTDOWN=1  ;;
    "--update") MYUPDATE=1  ;;
    "--from="* )        MYFROM=${CURARG#*=} ;;
    "--from"   ) shift; MYFROM=$1 ;;
    "--update-delay="* )        MYUPDATEDELAY=${CURARG#*=} ;;
    "--update-delay"   ) shift; MYUPDATEDELAY=$1 ;;
  esac
  shift
done
#handle undefined variables
#for booleans, undefined or "" is the only boolean false, test using: if [ $MYFLAG ]
######################################################################################

#defaults
GX_CLOSING_LOGOFF_MESSAGE="This computer is shutting down now!"


. /usr/share/groovix/global.conf


if [ -n "$MYFROM" ] ; then
	MYFROMARG="--from=$MYFROM"
fi

# message is displayed by groovix-session-forced-exit
#groovix-alert --type "warning" --title "SHUTTING DOWN" --message "$GX_CLOSING_LOGOFF_MESSAGE"

groovix-disable-logins

groovix-session-forced-exit "$GX_CLOSING_LOGOFF_MESSAGE"

if [ -n "$MYSHUTDOWN" ] || [ -n "$MYRESTART" ] ; then
	# go to non-graphical mode while we wait to update and/or shutdown
	service lightdm stop	

	if [ false ] ; then
	#not needed in 2017?
	exec 3>&1 4>&2
	trap 'exec 2>&4 1>&3' 0 1 2 3
	exec 1>/dev/tty12 2>&1
	# Everything below will go to tty12
	chvt 12
	fi

	echo shutdown log is in /var/log/groovix/shutdown-procedure.log

		#rotate log
                LOG=/var/log/groovix/shutdown-procedure.log
                mv $LOG.6 $LOG.7 
                mv $LOG.5 $LOG.6
                mv $LOG.4 $LOG.5
                mv $LOG.3 $LOG.4
                mv $LOG.2 $LOG.3
                mv $LOG.1 $LOG.2
                mv $LOG $LOG.1

	date > /var/log/groovix/shutdown-procedure.log
	tail -f /var/log/groovix/shutdown-procedure.log &
	exec 1>/var/log/groovix/shutdown-procedure.log 2>&1
else
	# we're going to stay in graphical mode, but with logins disabled for now
	#in case someone was trying to login right as the shutdown was occuring:
	service lightdm restart	
fi

if [ -n "$MYUPDATE" ] ; then

	if [ -n "$MYUPDATEDELAY" ] ; then
		echo
		echo
		echo "waiting $MYUPDATEDELAY before performing updates"
		echo
		sleep $MYUPDATEDELAY
	fi
	echo running groovix-net-control $MYFROMARG
	echo
	#due to the logging we still get stdout
	nohup groovix-net-control $MYFROMARG
	echo
	echo done running groovix-net-control $MYFROMARG
	echo
fi

if [ -n "$MYSHUTDOWN" ] ; then
	#echo shutting down now
	#shutdown -h now
	echo shutting down in 1 minute
	shutdown -h +1
elif [ -n "$MYRESTART" ] ; then
	#echo rebooting now
	#shutdown -r now
	echo rebooting in 1 minute
	shutdown -r +1
fi

echo
echo groovix-shutdown-procedure complete
echo
