Skip to content
Snippets Groups Projects
run.sh 3.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/bash
    
    mode="dev"
    
    docker="false"
    
    #
    # Run Script for AURA Engine
    #
    # Call with one of these parameters:
    #
    
    David Trattnig's avatar
    David Trattnig committed
    # - dev
    
    David Trattnig's avatar
    David Trattnig committed
    # - prod
    
    # - recreate-database
    
    
    David Trattnig's avatar
    David Trattnig committed
    # - docker:dev
    
    # - docker:prod
    
    # - docker:build
    
    # - docker:push
    
    David Trattnig's avatar
    David Trattnig committed
    if [[ $* =~ ^(dev|prod|test|recreate-database)$ ]]; then
    
    David Trattnig's avatar
    David Trattnig committed
    	mode=$1
    
    if [[ "$1" == *"docker:"* ]]; then
    
    	docker="true"
    
    	mode=${1#*:}
    
    David Trattnig's avatar
    David Trattnig committed
    echo "[ Run mode=$mode ]"
    
    echo "[ Docker=$docker ]"
    
    # Check for the correct Python version (3.8+)
    PYTHON_EXEC="python3"
    echo "[ Using $(python3 -V) ]"
    
    # +++ DEFAULT COMMANDS +++ #
    
    if [[ $docker == "false" ]]; then
    
    David Trattnig's avatar
    David Trattnig committed
    	### Runs Engine in development mode (Virtualenv) ###
    
    	if [[ $mode == "dev" ]]; then
    		source python/bin/activate
    		echo "Running Engine in Python Environment ($(python3 -V))"
    		python run.py
    	fi
    
    
    	### Runs Engine ###
    
    David Trattnig's avatar
    David Trattnig committed
    	if [[ $mode == "prod" ]]; then
    
    		/usr/bin/env $PYTHON_EXEC run.py
    
    	### Runs Tests ###
    
    	if [[ $mode == "test" ]]; then
    
    		source python/bin/activate
    		echo "Running Engine Tests in Python Environment ($(python3 -V))"
    		python -m unittest discover tests
    
    	### CAUTION: This deletes everything in your database ###
    
    	if [[ $mode == "recreate-database" ]]; then
    
    		/usr/bin/env $PYTHON_EXEC run.py --recreate-database
    
    # +++ DOCKER COMMANDS +++ #
    
    if [[ $docker == "true" ]]; then
    
    	BASE_DIR=$(readlink -f .)
    	echo "Absolute base dir: " $BASE_DIR
    
    	### Runs Engine Docker Container (Local build for development, if n/a pull from Docker Hub) ###
    
    David Trattnig's avatar
    David Trattnig committed
    	if [[ $mode == "dev" ]]; then
    
    
    		if [[ -z "${AURA_ENGINE_CONFIG_PATH}" ]]; then
    
    			AURA_ENGINE_CONFIG_PATH=$(readlink -f "${BASE_DIR}/config/docker.engine.ini")
    
    		fi
    
    		if [[ -z "${AURA_ENGINE_SOCKET_DIR}" ]]; then
    
    David Trattnig's avatar
    David Trattnig committed
    			AURA_ENGINE_SOCKET_DIR=$(readlink -f "${BASE_DIR}/../engine-core/socket")
    
    		if [[ -z "${AURA_ENGINE_CONTROL_CHANNEL}" ]]; then
    			AURA_ENGINE_CONTROL_CHANNEL="127.0.0.1:1337"
    		fi
    
    
    		if [[ -z "${AURA_ENGINE_AUDIO_SOURCE_DIR}" ]]; then
    
    			AURA_ENGINE_AUDIO_SOURCE_DIR=$(readlink -f "${BASE_DIR}/audio/source")
    
    		fi
    
    		if [[ -z "${AURA_ENGINE_AUDIO_PLAYLIST_DIR}" ]]; then
    
    			AURA_ENGINE_AUDIO_PLAYLIST_DIR=$(readlink -f "${BASE_DIR}/audio/playlist")
    
    		echo AURA_ENGINE_CONFIG_PATH="$AURA_ENGINE_CONFIG_PATH"
    		echo AURA_ENGINE_SOCKET_DIR="$AURA_ENGINE_SOCKET_DIR"
    		echo AURA_ENGINE_CONTROL_CHANNEL="$AURA_ENGINE_CONTROL_CHANNEL"
    		echo AURA_ENGINE_AUDIO_SOURCE_DIR="$AURA_ENGINE_AUDIO_SOURCE_DIR"
    		echo AURA_ENGINE_AUDIO_PLAYLIST_DIR="$AURA_ENGINE_AUDIO_PLAYLIST_DIR"
    
    
    		exec sudo docker run \
    			--network="host" \
    			--name aura-engine \
    
    			-u $UID:$GID \
    
    			-p "$AURA_ENGINE_CONTROL_CHANNEL":1337/tcp \
    			-v "$AURA_ENGINE_CONFIG_PATH":"/srv/config/engine.ini" \
    
    			-v "$AURA_ENGINE_SOCKET_DIR":"/srv/socket" \
    			-v "$AURA_ENGINE_AUDIO_SOURCE_DIR":"/var/audio/source":ro \
    			-v "$AURA_ENGINE_AUDIO_PLAYLIST_DIR":"/var/audio/playlist" \
    			-v "$BASE_DIR/logs":"/srv/logs" \
    
    David Trattnig's avatar
    David Trattnig committed
    			-e TZ=Europe/Vienna \
    
    			autoradio/engine
    
    	### Create Docker Image from local project ###
    
    	if [[ $mode == "build" ]]; then
    
    David Trattnig's avatar
    David Trattnig committed
    		exec sudo docker build -t autoradio/engine .
    
    David Trattnig's avatar
    David Trattnig committed
    	### Pushes the latest Docker Image to Docker Hub ###
    
    	if [[ $mode == "push" ]]; then
    		exec sudo docker push autoradio/engine
    	fi
    
    David Trattnig's avatar
    David Trattnig committed
    fi