TREX_HOME='/opt/lsts/trex'
EUROPA_HOME=/usr/share/europa
TREX_LIBS=$TREX_HOME/lib:/usr/lib
TREX_BINS=$TREX_HOME/bin
TREX_SHARED=$TREX_HOME/share/trex
TREX_NICE=10
TREX_CFG=xtreme2

maybe_upgrade()
{
    if ! [ -f $TREX_HOME/trex-*.tar.bz2 ]; then
  
	return 1
    fi

    echo -n "* Starting T-REX upgrade... "
    rm -rf $TREX_HOME/.trex-upgrade &&
    mkdir $TREX_HOME/.trex-upgrade &&
    tar -x -C $TREX_HOME/.trex-upgrade -f $TREX_HOME/trex-*.tar.bz2 &&
    rm $TREX_HOME/trex-*.tar.bz2 &&
    for dir in $TREX_HOME/.trex-upgrade/trex-*/*; do
        d="$(basename "$dir")"
        rm -rf "$TREX_HOME/$d"
        mv "$dir" $TREX_HOME
    done

    rm -rf $TREX_HOME/.trex-upgrade
    echo "done"
}

start()
{
    maybe_upgrade    

	if [ -d "${EUROPA_HOME}" ]; then 
    	export EUROPA_HOME
    	TREX_LIBS=${TREX_LIBS}:$EUROPA_HOME/lib
	fi

	platform='unknown'
	lib_path_var=LD_LIBRARY_PATH
	unamestr=`uname`
	if [ "$unamestr" = 'Darwin' ]; then
    	if [ -n "${DYLD_FALLBACK_LIBRARY_PATH+x}" ]; then
			export DYLD_FALLBACK_LIBRARY_PATH=${DYLD_FALLBACK_LIBRARY_PATH}:${TREX_LIBS}
    	else
			export DYLD_FALLBACK_LIBRARY_PATH=${TREX_LIBS}
    	fi
    	export DYLD_BIND_AT_LAUNCH=YES
	else 
    	if [ -n "${LD_LIBRARY_PATH+x}" ]; then
			export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${TREX_LIBS}
    	else
			export LD_LIBRARY_PATH=${TREX_LIBS}
    	fi
	fi
   
	if [ -n "${PATH+x}" ]; then
    	export PATH=${PATH}:${TREX_BINS}
	else 
    	export PATH=${TREX_BINS}
	fi

	if [ -n "${TREX_PATH+x}" ]; then
    	export TREX_PATH=${TREX_PATH}:${TREX_SHARED}/cfg:${TREX_SHARED}/plugins
	else
    	export TREX_PATH=${TREX_SHARED}/cfg:${TREX_SHARED}/plugins
	fi

	if [ -z "${TREX_LOG_DIR+x}" ]; then
    	export TREX_LOG_DIR=${TREX_SHARED}/log
	fi

	py_libs=${TREX_SHARED}/python

	if [ -n "${PYTHONPATH+x}" ]; then 
    	export PYTHONPATH=${py_libs}:${PYTHONPATH}
	else
    	export PYTHONPATH=${py_libs}
	fi
    
    track_amc wait
    amc $TREX_CFG --nice=$TREX_NICE < /dev/null > /dev/null 2>&1 &
    PID=$!
    sleep 1
    track_amc $PID > $TREX_LOG_DIR/latest/track_amc.csv &

}

stop()
{
    while [ 1 ]; do
        echo "* Stopping process..."        
        killall amc > /dev/null 2>&1
	killall -9 track_amc > /dev/null 2>&1
       
        for r in 0 1 2 3 4 5 6 7 8 9; do
            if [ -n "$(pidof amc)" ]; then
                echo "* Waiting for process to exit ($r)..."
                sleep 1
            else
                echo "* Process not running."
                return 1
            fi
        done

        echo "* Forcing exit..."
        killall -9 amc > /dev/null 2>&1
        sleep 1
    done
}