#!/bin/bash

# This script launches Qualimap on Linux and MacOS

# Change default memory settings here

JAVA_MEM_DEFAULT_SIZE="1200M"

# Check for special argument controlling memory size

ARGS=()
for p in "$@"
do
    if [[ "$p" = "--java-mem-size="* ]]; then
        # skip argument to prevent propogating and get its value  
        JAVA_MEM_SIZE=`echo $p | cut -d \= -f 2`
    else 
        # collect arguments
        ARGS+=($p)
    fi

    if [[ "$p" = *"help"* || "$p" = *"-h" ]]; then 
        OUTPUT_ADDITIONAL_HELP="1" 
    fi   

done

if [ "$JAVA_MEM_SIZE" = "" ]; then
    # Setting default memory size
    JAVA_MEM_SIZE=$JAVA_MEM_DEFAULT_SIZE
fi

echo "Java memory size is set to $JAVA_MEM_SIZE" 
echo "Launching application..."
echo

if [ "$JAVA_OPTS" != "" ]
then
	java_options=$JAVA_OPTS
	echo "detected environment java options $java_options"
else
	java_options="-Xms32m -Xmx$JAVA_MEM_SIZE -XX:MaxPermSize=1024m"
fi


CLASSPATH=""

prg=$0

# check if symbolic link

while [ -h "$prg" ] ; do
    ls=`ls -ld "$prg"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '.*/.*' > /dev/null; then
        prg="$link"
    else
        prg="`dirname $prg`/$link"
    fi
done


shell_path=`dirname "$prg"`;
absolute=`echo $shell_path | grep "^/"`;

if [ -z "$absolute" ]
then
	export QUALIMAP_HOME="`pwd`/$shell_path"
else 
	export QUALIMAP_HOME="$shell_path"
fi

# For debug purposes

#echo $QUALIMAP_HOME
#echo "ARGS are ${ARGS[@]}"

set -o errexit

java $java_options -classpath "$QUALIMAP_HOME"/qualimap.jar:"$QUALIMAP_HOME"/lib/* org.bioinfo.ngs.qc.qualimap.main.NgsSmartMain "${ARGS[@]}"

if [ -n "$OUTPUT_ADDITIONAL_HELP" ]; then 
    echo "Special arguments: "
    echo
    echo "    --java-mem-size  Use this argument to set Java memory heap size. Example:"
    echo "                     qualimap bamqc -bam very_large_alignment.bam --java-mem-size=4G"
    echo
fi

