Newer
Older
#!/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-test-0|api-test-1|api-test-2|api|test)$ ]]; 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 "Activating Python Environment"
source python/bin/activate
# echo "Building Web Applications"
# sh ./script/build-web.sh
echo "Starting API Server"
### Runs the API Server (Test) ###
if [[ $mode == "api-test-0" ]]; then
# echo "Building Web Applications"
# sh ./script/build-web.sh
echo "Starting API Server 0"
/usr/bin/env python3.7 src/app.py config=test/config/engine-0-api.ini
fi
if [[ $mode == "api-test-1" ]]; then
# echo "Building Web Applications"
# sh ./script/build-web.sh
echo "Starting API Server 1"
/usr/bin/env python3.7 src/app.py config=test/config/engine-1-api.ini
fi
if [[ $mode == "api-test-2" ]]; then
# echo "Building Web Applications"
# sh ./script/build-web.sh
echo "Starting API Server 2"
/usr/bin/env python3.7 src/app.py config=test/config/engine-2-api.ini
fi
### Runs the API Server using Gunicorn without a system daemon (Production) ###
if [[ $mode == "api" ]]; then
echo "Activating Python Environment"
gunicorn -c config/gunicorn.conf.py src.app:app
if [[ $mode == "test" ]]; then
echo "Testing API Server"
tox
fi
### CAUTION: This deletes everything in your database ###
if [[ $mode == "recreate-database" ]]; then
/usr/bin/env python3.7 src/app.py --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 \
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