#!/bin/bash

STASH_NAME=`git stash create`;
if [ "$STASH_NAME" == "" ]; then
	STASH_NAME="HEAD"
fi
git archive --format=tar -o ee.tar $STASH_NAME

# Absolutely have to have the git folder available in the archive?
#tar --append --file=ee.tar .git

IMAGE_NAME="expressionengine/eecms-test:old"
VOLUME_ID=`docker volume create`
HELPER_CONTAINER_ID=`docker create -v $VOLUME_ID:/app $IMAGE_NAME /bin/true`

function remove_app_volume {
	docker rm $HELPER_CONTAINER_ID
	docker volume rm $VOLUME_ID
}

function commit_container_changes {
	CONTAINER_ID=`docker ps -l -q`
	docker commit $CONTAINER_ID $IMAGE_NAME
}

function remove_last_container {
	CONTAINER_ID=`docker ps -l -q`
	docker rm $CONTAINER_ID
}

STATUS=0

# Open a prompt on the Docker container to fiddle
if [ "$1" == "prompt" ]; then
	docker run -t -i -p 8080:80 -v $(pwd):/app $IMAGE_NAME /bin/bash
# Install or update gems
elif [ "$1" == "updategems" ]; then
	docker run -t -i -v $(pwd):/app $IMAGE_NAME ./updategems.sh

	commit_container_changes
	remove_last_container
else
	docker cp ee.tar $HELPER_CONTAINER_ID:/app

	# Have to quote this to get multiple arguments working for run.sh
	DOCKER_CMD="docker run --rm -t -i -v /app --volumes-from $HELPER_CONTAINER_ID $IMAGE_NAME /bin/bash -c \"./run.sh $@\""
	eval $DOCKER_CMD

	((STATUS+=$?))

	if [ ! -d /tmp/artifacts ]; then
		mkdir /tmp/artifacts > /dev/null
	fi
	docker cp $HELPER_CONTAINER_ID:/app/artifacts/. /tmp/artifacts
fi

remove_app_volume > /dev/null

rm ee.tar

exit $STATUS
