#!/bin/bash

# Run Khiops tool
# see the khiops_env script for full documentation on the environment variables used by Khiops

error() {
    if [ -f /dev/log ]; then
        logger "$*" --tag khiops --stderr
    else
        echo "$*" >&2
    fi
    if [ -n "$DISPLAY" ] && command -v notify-send >/dev/null 2>&1; then
        notify-send "Khiops" "$*" -i /usr/share/pixmaps/khiops.png -u normal
    fi
    unset _IS_CONDA
    exit 1
}

warning() {
    if [ -f /dev/log ]; then
        logger "$*" --tag khiops --stderr
    else
        echo "$*" >&2
    fi
    if [ -n "$DISPLAY" ]; then
        notify-send "Khiops" "$*" -i /usr/share/pixmaps/khiops.png -u normal
    fi
}

get_script_dir() {
    SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
    echo "$SCRIPT_DIR/"
}

if [[ ! -f "$(get_script_dir)"/khiops_env ]]; then
    echo "$(get_script_dir)/khiops_env is missing"
    exit 1
fi

# Initialize Khiops env variables
source $(get_script_dir)/khiops_env ""

# Test if batch mode from parameters
KHIOPS_BATCH_MODE=false
for ((i = 1; i <= $#; i++)); do
    if [ ${!i} = "-b" ] || [ ${!i} = "-h" ] || [ ${!i} = "-s" ] || [ ${!i} = "-v" ]; then
        KHIOPS_BATCH_MODE=true
        break
    fi
done

if [[ ! -e $KHIOPS_COCLUSTERING_PATH ]]; then
    error "Binary not found ($KHIOPS_COCLUSTERING_PATH)"
fi

export CLASSPATH=$CLASSPATH:$KHIOPS_CLASSPATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$KHIOPS_JAVA_PATH

launch_khiops() {
    if [[ $# -eq 0 ]]; then
        # run without parameters
        # run and save scenario and log files in directory KHIOPS_LAST_RUN_DIR
        $KHIOPS_COCLUSTERING_PATH -o "${KHIOPS_LAST_RUN_DIR}"/scenario._kh -e "${KHIOPS_LAST_RUN_DIR}"/log.txt
    else
        # run with parameters
        $KHIOPS_COCLUSTERING_PATH "$@"
    fi
}

# Launck Khiops
if [ "$KHIOPS_BATCH_MODE" = true ]; then
    launch_khiops "$@"
else
    if [ "$_IS_CONDA" = true ] || [ -z "$DISPLAY" ]; then
        error "GUI is not available, please use the '-b' flag"
    else
        if [ -z "$KHIOPS_JAVA_PATH" ]; then
            if [ -z "$KHIOPS_JAVA_ERROR" ]; then
                error "GUI is not available, please either use the '-b' flag, or install the 'khiops' native package for your host operating system."
            else
                error "$KHIOPS_JAVA_ERROR"
            fi
        else
            launch_khiops "$@"
        fi
    fi
fi

unset _IS_CONDA
exit $?
