#!/bin/bash
# File:        etoys
# Author:      Bert Freudenberg
# Description: Script to start the Squeak VM binary 
#              with the etoys.image

VM="squeak"
VMOPTIONS="-encoding UTF-8 -vm-display-x11 -xshm"
IMAGE="/usr/share/etoys/etoys.image"
IMOPTIONS=""
DOCUMENT=""
WRAPPER=""

#set to 1 to work around OLPC bug #8008
export SQUEAK_FAKEBIGCURSOR=0

# if ETOYS_DEBUG is >= 1 do debug output
[ "0$ETOYS_DEBUG" -gt "0" ] && DEBUG=echo || DEBUG=false

# default directories (used if not running as Sugar activity)
[ -z "$SQUEAK_SECUREDIR" ] && export SQUEAK_SECUREDIR="$HOME/.etoys/private"
[ -z "$SQUEAK_USERDIR" ] && export SQUEAK_USERDIR="$HOME/Etoys"

[ ! -d "$SQUEAK_SECUREDIR" ] && mkdir -p "$SQUEAK_SECUREDIR" && chmod 700 "$SQUEAK_SECUREDIR"
[ ! -d "$SQUEAK_USERDIR" ] && mkdir -p "$SQUEAK_USERDIR"

function usage()
{
    echo "Usage: etoys [--param value] [-vmopt value] [arg value]"
    echo "       where --param is --vm, --image, or --document;"
    echo "       -vmopt is an option passed to the Squeak VM;"
    echo "       and args are passed to the Squeak image."
}

while [ -n "$1" ] ; do
	if [ -z "$2" ] ; then
	        usage
		exit -1
	fi
	case "$1" in
	        --help)
			usage
 			exit
			;;
	        --document)
			case "$2" in
			    /*) DOCUMENT="$2"
				;;
			    *) DOCUMENT="$PWD/$2"
				;;
			esac
 			shift
			;;
	        --image)
			case "$2" in
			    /*) IMAGE="$2"
				;;
			    *) IMAGE="$PWD/$2"
				;;
			esac
 			shift
			;;
	        --vm)
			case "$2" in
			    /*) VM="$2"
				;;
			    *) VM="$PWD/$2"
				;;
			esac
 			shift
			;;
		-*) VMOPTIONS="$VMOPTIONS $1 $2"
			shift
			;;
		*)  IMOPTIONS="$IMOPTIONS $1 $2"
			shift
			;;
	esac
	shift
done

# do not crash on dbus errors
export DBUS_FATAL_WARNINGS=0

# make Compose input methods work
[ -z "$LC_ALL" ] && export LC_ALL="$LANG"

# if pulseaudio is running, use it if VM has the driver, or fall back to OSS
if pulseaudio --check 2>/dev/null ; then
    if "$VM" -help 2> /dev/null | grep -q vm-sound-pulse ; then
        VMOPTIONS="$VMOPTIONS -vm-sound-pulse"
    else
        VMOPTIONS="$VMOPTIONS -vm-sound-oss"
        if padsp true 2>/dev/null ; then
            WRAPPER=padsp
        fi
    fi
fi

# enable compositioninput 
case "$LANG" in 
    bn* | gu* | hi* | kn* | ml* | mr* | ta* | te* | sa* )
        case "$LANG" in
            *.[uU][tT][fF]-8 | *.[uU][tT][fF]8)
                VMOPTIONS="$VMOPTIONS -compositioninput" 
                ;;
        esac
    ;;
esac

# VM, Image, and Document are non-optional
# Document has to be present even if empty for IMOPTIONS to work
$DEBUG $WRAPPER "$VM" $VMOPTIONS "$IMAGE" "$DOCUMENT" $IMOPTIONS
exec $WRAPPER "$VM" $VMOPTIONS "$IMAGE" "$DOCUMENT" $IMOPTIONS
