#!/bin/bash
mode="dev"


if [[ $* =~ ^(prod)$ ]]; then 
	mode="prod"
fi

if [ $mode == "dev" ]; then
    echo "[Installing AURA ENGINE for Development]"
fi
if [ $mode == "prod" ]; then
    echo "[Installing AURA ENGINE for Production]"
fi

echo "Installation System Packages ..."
bash script/install-system-packages.sh




# Development and Production

echo "Installing Web Application Packages ..."
bash script/install-web.sh

echo "Installing Python Requirements ..."
python3.7 $(which pip3) install -r requirements.txt


# Development 

if [ $mode == "dev" ]; then
    # Set LOCK file location
    LOCKFILE_DB=configuration/.engine.install-db.lock

    echo "Create local Logs Folder ..."
    mkdir -p logs

    echo "Copy configuration to './configuration/engine.ini'"
    cp -n configuration/sample.engine.ini configuration/engine.ini
fi


# Production 

if [ $mode == "prod" ]; then
    # Set LOCK file location
    LOCKFILE_DB=/etc/aura/.engine.install-db.lock

    if getent passwd 'engineuser' > /dev/null 2>&1; then  
        echo "User 'engineuser' exists already."; 
    else     
        echo "Creating Engine User ..."
        adduser engineuser
        adduser engineuser sudo
    fi
    
    echo "Copy Supervisor Config to '/etc/supervisor/conf.d'"
    cp configuration/supervisor/* /etc/supervisor/conf.d/

    echo "Create Log Directory '/var/log/aura/engine'"
    mkdir -p /var/log/aura
    mkdir -p /var/log/aura/engine

    echo "Create Configuration Directory '/etc/aura/'"
    mkdir -p /etc/aura

    echo "Copy configuration to '/etc/aura/engine.ini'"
    cp -n configuration/sample.engine.ini /etc/aura/engine.ini
    
    echo "Set Ownership of '/opt/aura/engine', '/var/log/aura/' and '/etc/aura/engine.ini' to Engine User"
    chown -R engineuser:engineuser .
    chown -R engineuser:engineuser /var/log/aura/
    chown -R engineuser:engineuser /etc/aura/engine.ini
fi


# Setup Database
# Check if databases are already set-up
if test -f "$LOCKFILE_DB"; then
  echo "Aura Engine Databases are already existing! Skipping..."
else
    echo "Setting up database ..."
    echo 
    echo "Which database system do you want to use? (Press '1' or '2')"
    echo "  [1] MariaDB"
    echo "  [2] Other / Manually"
    echo

    while true; do
    read -rsn1 input
    if [ "$input" = "1" ]; then
        echo "Creating DB for MariaDB ..."
        bash script/init-db-mariadb.sh
        break
    fi
    if [ "$input" = "2" ]; then
        echo "Manual database setup selected."
        break
    fi
    done

    # Create lockfile to avoid accidential re-creation of the database
    touch $LOCKFILE_DB
fi

echo 
echo "+++ Installation of AURA Engine finished! +++"
echo