#!/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-mariadb.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-mariadb.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

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
  
echo 
echo "+++ Installation of AURA Engine finished! +++"