#!/bin/bash
# Default mode
mode="api-dev"
docker="false"

#
# Run Script for AURA Engine API
#
# Call with one of these parameters:
#
# - api-dev
# - api
# - recreate-database

# - docker:recreate-database
# - docker:build
# - docker:push
# - docker:api
# 

if [[ $* =~ ^(api-dev|api)$ ]]; then 
	mode=$1 
fi

if [[ "$1" == *"docker:"* ]]; then
	docker="true"
	mode=${1#*:}
fi


echo "[ Run mode=$mode ]"
echo "[ Docker=$docker ]"



# +++ DEFAULT COMMANDS +++ #

if [[ $docker == "false" ]]; then

	### Runs the API Server (Development) ###

	if [[ $mode == "api-dev" ]]; then
		# echo "Building Web Applications"
		# sh ./script/build-web.sh
		echo "Starting API Server"
		/usr/bin/env python3.7 -m src
	fi

	### Runs the API Server using Gunicorn without a system daemon (Production) ###

	if [[ $mode == "api" ]]; then
		echo "Activating Python Environment"
		source ../python-env/bin/activate
		echo "Starting API Server"
		gunicorn -c configuration/gunicorn.conf.py src:app
	fi

	### CAUTION: This deletes everything in your database ###

	if [[ $mode == "recreate-database" ]]; then
		/usr/bin/env python3.7 -m src --recreate-database
	fi

fi


# +++ DOCKER COMMANDS +++ #

if [[ $docker == "true" ]]; then
	BASE_D=$(realpath "${BASH_SOURCE%/*}/")

	### Runs Engine API using Gunicorn ###

	# if [[ $mode == "api" ]]; then
	# 	exec sudo docker run --name engine-api --rm -it \
	# 		-u $UID:$GID \
	# 		-p 127.0.0.1:8050:5000 \
	# 		-v "$BASE_D":/srv \
	# 		-v "$BASE_D/configuration/":/etc/aura \
	# 		--tmpfs /var/log/aura/ autoradio/engine-api /srv/src/__main__.py \
	# 		--device autoradio/engine-api /bin/bash \
	# 		-c "gunicorn -c configuration/gunicorn.conf.py -m src:app"
	# fi

	if [[ $mode == "api" ]]; then
		exec sudo docker run --name engine-api --rm -it \
			-u $UID:$GID \
			-p 127.0.0.1:8050:5000 \
			-v "$BASE_D":/srv \
			-v "$BASE_D/configuration/":/etc/aura \
			--tmpfs /var/log/aura/ autoradio/engine-api /srv/src \
			--device autoradio/engine /bin/bash 
			# -c "gunicorn -c configuration/gunicorn.conf.py src/__main__.py:app"
	fi

	### CAUTION: This deletes everything in your database ###

	if [[ $mode == "recreate-database" ]]; then
		exec sudo docker run --rm -it \
			-u $UID:$GID \
			-v "$BASE_D":/srv \
			-v "$BASE_D/configuration/":/etc/aura \
			--tmpfs /var/log/aura/ autoradio/engine-api /srv/src --recreate-database
	fi

	### Create Docker Image from local project ###

	if [[ $mode == "build" ]]; then
		exec sudo docker build -t autoradio/engine-api .
	fi

	### Pushes the latest Docker Image to Docker Hub ###

	if [[ $mode == "push" ]]; then
		exec sudo docker push autoradio/engine-api
	fi
fi