#!/bin/bash

statement='docker container run --rm'
statement+=' [DOCKER_REGISTRY/]DOCKER_USER/DOCKER_REPO[:DOCKER_TAG]'
statement+=' /.docker4gis/run'
statement+=' [DOCKER_TAG] [DOCKER_REPO] [DOCKER_USER] [DOCKER_REGISTRY]'

if [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "h" ] || [ "$1" = "help" ]; then
    echo "Usage: eval \"\$($statement)\""
    exit 1
fi

DOCKER_TAG=${1:-$DOCKER_TAG}
DOCKER_REPO=${2:-$DOCKER_REPO}
DOCKER_USER=${3:-$DOCKER_USER}
DOCKER_REGISTRY=${4:-$DOCKER_REGISTRY}

DOCKER_TAG=${DOCKER_TAG:-latest}
DOCKER_REPO=${DOCKER_REPO:?Missing DOCKER_REPO}
DOCKER_USER=${DOCKER_USER:?Missing DOCKER_USER}
DOCKER_REGISTRY=${DOCKER_REGISTRY:-docker.io}

DOCKER_IMAGE=$DOCKER_REGISTRY/$DOCKER_USER/$DOCKER_REPO:$DOCKER_TAG

echo "
# Start the container using the docker4gis framework embedded in the image,
# extracted using a dummy container to copy it from.
(
    export DOCKER_REGISTRY=$DOCKER_REGISTRY
    export DOCKER_USER=$DOCKER_USER
    temp=\$(mktemp -d) &&
        dummy=\$(docker container create '$DOCKER_IMAGE') &&
        docker container cp \"\$dummy\":/.docker4gis \"\$temp\" >/dev/null &&
        docker container rm \"\$dummy\" >/dev/null &&
        cd \"\$temp\"/.docker4gis &&
        docker4gis/run.sh '$DOCKER_REPO' '$DOCKER_TAG'
    result=\$?
    rm -rf \"\$temp\"
    exit \$result
)"
