#! /bin/bash
ARGUMENT=$1;

if [ $# != 1 ]; then
    echo "Expected 1 Aurgument. Received " $# 1>&2;
    exit 1
fi
#Start webdrive and http-server
if [ $ARGUMENT == start ]; then
    echo "Creating Log Directory ..."    
    mkdir logs;
    
    cd ..
    node app.js -p 1984 -x platform/persistence/elastic -i example/persistence > protractor/logs/nodeApp.log 2>&1 &
    sleep 3;
    if grep -iq "Error"  protractor/logs/nodeApp.log; then
        if grep -iq "minimist"  protractor/logs/nodeApp.log; then
            echo "  Node Failed Because Minimist is not installed"
            echo "  Installng Minimist ..."
            npm install minimist express > protractor/logs/minimist.log 2>&1 &
            wait $!    
            if [ $? != 0 ]; then
                echo "    Error: minimist"
                echo "    Check Log file"
                echo
            else
                echo "    Started: Minimist"  
                echo
                node app.js -p 1984 -x platform/persistence/elastic -i example/persistence > protractor/logs/nodeApp.log 2>&1 &
                if grep -iq "Error"  protractor/logs/nodeApp.log; then
                    echo "    Error: node app failed"
                    echo "    Check Log file"
                    echo
                else
                    echo "    Started: node app.js"  
                    echo
                fi
            fi
        else    
            echo "    Error: node app failed"
            echo "    Check Log file"
            echo
        fi
    else
        echo "    Started: node app.js"  
        echo
    fi
    echo "Starting webdriver ..."
    
    cd protractor;
    webdriver-manager start > logs/webdriver.log 2>&1 &
    sleep 3;
    if grep -iq "Exception"  logs/webdriver.log; then
        echo "    Error: webdriver-manager"
        echo "    Check Log file"
        echo 
    else
        echo "    Started: webdriver-manager"  
    fi
    echo "Starting Elastic Search..."
    
    elasticsearch > logs/elasticSearch.log 2>&1 &
    sleep 3;
    if grep -iq "Exception"  logs/elasticSearch.log; then
        echo "    Error: ElasticSearch"
        echo "    Check Log file"
        echo 
    else
        echo "    Started: ElasticSearch"
    fi
#Runs Protractor tests    
elif [ $ARGUMENT == run ]; then
    protractor ./conf.js
#Kill Process    
elif [ $ARGUMENT == stop ]; then
    echo "Removing logs"
    rm -rf logs
    echo "Stopping Node"
    kill $(ps aux | grep "[n]ode app.js"| awk '{print $2}');
    
    echo "Stopping webdriver ..."
    kill $(ps aux | grep "[p]rotractor" | awk '{print $2}');
    kill $(ps aux | grep "[w]ebdriver-manager" | awk '{print $2}');
    sleep 1;
    echo "Stopping Elastic..."
    kill $(ps aux | grep "[e]lastic" | awk '{print $2}');
    sleep 1; 
else 
    echo "Unkown: Command" $1;
fi