#!/bin/bash
# Driver script for the additional GRIDSS java utility programs
# included in the jar

# Adapted from bioconda-recipes/picard/picard.sh
set -o pipefail
# Find original directory of bash script, resolving symlinks
# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in/246128#246128
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
    DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
    SOURCE="$(readlink "$SOURCE")"
    [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

# Invoke the gridss entry point based on the name of script
entrypoint=$(basename $0)
namespace="gridss"
if [[ "$entrypoint" =~ "Collect" ]] || [[ "$entrypoint" =~ "ReportThresholdCoverage" ]] ; then
	namespace="gridss.analysis"
elif [[ "$entrypoint" =~ "AnnotateVariantsKraken" ]] || [[ "$entrypoint" =~ "ExtractBestSequencesBasedOnReport" ]] || [[ "$entrypoint" =~ "SubsetToTaxonomy" ]] ; then
	namespace="gridss.kraken"
elif [[ "$entrypoint" =~ "AnnotateVariantsRepeatMasker" ]] ; then
	namespace="gridss.repeatmasker"
fi

# GRIDSS relies on htsjdk multi-thread I/O for performance
# we need to add these to all entry points.
jvm_args="
		-Dsamjdk.use_async_io_write_samtools=true \
		-Dsamjdk.use_async_io_write_tribble=true \
		-Dsamjdk.buffer_size=4194304 \
		-Dsamjdk.use_async_io_read_samtools=true"

java $jvm_args -cp $DIR/gridss.jar $namespace.$entrypoint "$@"

