#!/bin/bash
set -e
if [ -n "$DEBUG" ]; then
    set -x
fi

# The release name we are configured to run under.
typeset dmathicsserver_version='1.0.0'

# Allow customization using POSIX environment variables:
APP_DATADIR=${APP_DATADIR:-/tmp}
DOCKER=${DOCKER:-docker}
MATHICS_DJANGO_DB=${MATHICS_DJANGO_DB:-"mathics.sqlite"}
MATHICS_DJANGO_DB_PATH=${MATHICS_DJANGO_DB_PATH:-/usr/src/app/.local/var/mathics/${MATHICS_DJANGO_DB}}
TAG=${TAG:-latest}

MATHICS_IMAGE=${MATHICS_IMAGE:-mathicsorg/mathics:${TAG}}

typeset -a stripped_args
stripped_args=()

for arg in "$@" ; do
    case "$arg" in
        -h | --help | help )
			cat <<_EOH
usage:
   dmathicsserver [options]

runs the Mathics command-line interface from a docker container.

Options specfic to dmathicsserver:

  -u | -U | --upgrade | upgrade
  pull updates to the docker container if there is a new image

  -h| --help | help
  show this help

  -V| --version
  show the dmathicsscript version and exit

We will now pass help along to the docker image. Just a sec...

_EOH
			stripped_args+=("--help")
			;;
        -u | -U | --upgrade | upgrade)
			$DOCKER pull $MATHICS_IMAGE
			;;
        -v | -V | --version)
			echo "dmathicsserver version ${dmathicsserver_version}"
			exit 100
			;;
		default)
			stripped_args+=($arg)
    esac
done

# Show environment variables
for env_setting in MATHICS_DJANGO_DB_PATH APP_DATADIR MATHICS_IMAGE DISPLAY; do
	echo $env_setting = ${!env_setting}
done

$DOCKER run \
		-it \
		--name mathics-django \
		--rm \
		--env="DISPLAY" \
		--env "MATHICS_DJANGO_DB_PATH=$MATHICS_DJANGO_DB_PATH" \
		--workdir=/app \
		--volume="$PWD":/app \
		--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
		--volume="${APP_DATADIR}:/usr/src/app/data" \
		-p 8000:8000 \
		$MATHICS_IMAGE \
		--mode ui -- $stripped_args
