set -e

shopt -s nullglob

PULSAR_INSTALL_TARGET="${PULSAR_INSTALL_TARGET:-pulsar-app}"
PLANEMO_INSTALL_TARGET="${PLANEMO_INSTALL_TARGET:-planemo==0.36.1}"

init_temp_dir() {
    TEMP_DIR=`mktemp -d`
    echo "Setting up test directory $TEMP_DIR"
    cd "$TEMP_DIR"
}

init_pulsar() {
    PULSAR_INSTALL_TARGET="${PULSAR_INSTALL_TARGET:-pulsar-app}"
    PROJECT_DIR="$SCRIPT_DIR/.."

    mkdir pulsar
    cd pulsar
    echo "Setting up virtualenv for Pulsar"
    virtualenv venv
    . venv/bin/activate # .venv\Scripts\activate if Windows
    echo "Installing Pulsar using 'pip install $PULSAR_INSTALL_TARGET'"
    pip install $PULSAR_INSTALL_TARGET

    cd ..
}

stop_pulsar() {
    cd pulsar
    . venv/bin/activate
    echo "Stopping Pulsar daemon."
    pulsar --stop-daemon
    echo "Ending tests."    
}


check_pulsar() {
    cd pulsar

    echo "Starting Pulsar in daemon mode."
    pulsar --daemon
    echo "Waiting for Pulsar to start."
    sleep 2
    echo "Running a standalone Pulsar job."
    pulsar-check # runs a test job
    echo "Stopping Pulsar daemon."
    pulsar --stop-daemon
    echo "End Pulsar Checks"

    echo "Testing Pulsar-Galaxy Interaction"
    echo "Starting Pulsar in daemon mode."
    pulsar --daemon
    echo "Waiting for Pulsar to start."
    sleep 2

    cd ..    
}

init_planemo() {
    template="$1"

    echo "Creating a virtual environment for Planemo to drive a test job."
    virtualenv planemo-venv
    . planemo-venv/bin/activate
    echo "Installing Pulsar using 'pip install $PLANEMO_INSTALL_TARGET'"
    pip install --upgrade pip
    pip install "$PLANEMO_INSTALL_TARGET"
    echo "Setting up Planemo test tools."
    planemo project_init --template="$template" test_tools
}

run_planemo() {
    echo "Running tool tests with Planemo through Pulsar"
    : ${GALAXY_ROOT:=""}
    galaxy_root_args=""
    if [ -d "$GALAXY_ROOT" ];
    then
        galaxy_root_args="--galaxy_root $GALAXY_ROOT"
    fi
    planemo --verbose test $galaxy_root_args "$@"
    echo "Tests complete."
}
