Skip to content
Snippets Groups Projects
run.sh 2.26 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/bash
    
    David Trattnig's avatar
    David Trattnig committed
    mode="engine"
    
    docker="false"
    
    #
    # Run Script for AURA Engine
    #
    # Call with one of these parameters:
    #
    
    # - engine
    # - core
    # - lqs
    
    # - recreate-database
    
    
    # - docker:engine
    # - docker:build
    
    # - docker:push
    
    if [[ $* =~ ^(init|env|engine|core|lqs|test|recreate-database)$ ]]; then 
    
    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
    
    	### Initializes the environment & installs dependencies ###
    
    	if [[ $mode == "init" ]]; then
    		mkdir -p logs
    		pip3 install -r requirements.txt 
    	fi
    
    
    	### Runs Engine Core & Liquidsoap ###
    
    	if [[ $mode == "engine" ]]; then
    
    		eval $(opam env)
    
    		/usr/bin/env $PYTHON_EXEC run.py
    
    	### Runs Engine Core only ###
    
    	if [[ $mode == "core" ]]; then
    
    		/usr/bin/env $PYTHON_EXEC run.py --without-lqs
    
    	fi
    
    	### Runs Liquidsoap only ###
    
    	if [[ $mode == "lqs" ]]; then
    
    		lqs=$(/usr/bin/env $PYTHON_EXEC run.py --get-lqs-command)
    
    		eval "$lqs"
    	fi
    
    
    	### Runs Tests ###
    
    	if [[ $mode == "test" ]]; then
    		/usr/bin/env $PYTHON_EXEC -m unittest discover tests
    	fi
    
    
    	### 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_D=$(realpath "${BASH_SOURCE%/*}/")
    
    	### Runs Engine Core & Liquidsoap ###
    
    	if [[ $mode == "engine" ]]; then
    
    		exec sudo docker run \
    			--network="host" \
    			--name aura-engine \
    			--rm -d \
    
    			-u $UID:$GID \
    			-v "$BASE_D":/srv \
    
    			-v "$BASE_D/audio/source":/var/audio/source:ro \
    
    			-v "$BASE_D/audio/station":/var/audio/station:ro \
    			-v "$BASE_D/audio/playlist":/var/audio/playlist:ro \
    
    			-v "$BASE_D/config/docker":/etc/aura \
    
    			-v "/dev/snd":/dev/snd \
    			--privileged \
    
    			--tmpfs /var/log/aura/ \
    
    			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