#!/bin/bash
set -e

PYTHON_VERSION=3.11

parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )

pushd "$parent_path" > /dev/null

d=$( pwd )

export PATH=$d/external/bin:$d/rhapsody_internal/bin:$d/rhapsody_internal/shell:\
$d/rhapsody_internal/pythonDeps/bin:$d/rhapsody_internal/pythonRhapsody/bin:\
$d/rhapsody_internal/rscript:$d/rhapsody_internal/igblast:$PATH

export PYTHONPATH=$d/rhapsody_internal/pythonDeps/lib/python${PYTHON_VERSION}/site-packages:\
$d/rhapsody_internal/pythonRhapsody/lib/python${PYTHON_VERSION}/site-packages:$d/external/lib/python${PYTHON_VERSION}/site-packages

export LD_LIBRARY_PATH=$d/external/lib:$d/rhapsody_internal/lib

export RHOME=$d/external

export RHAPSODY_HOME=$d/rhapsody_internal

export FONTCONFIG_FILE=$d/external/etc/fonts/fonts.conf

popd > /dev/null

if [[ "$*" == *"--no-parallel"* ]]
then
    parallel=
else
    parallel=--parallel
fi

for arg do
  shift
  [ "$arg" = "--no-parallel" ] && continue
  set -- "$@" "$arg"
done

case $1 in
	pipeline)
		cwl=MIST
    	yml=$2
    	;;
	annotateCellLabelUmi)
		cwl=AnnotateCellLabelUMI
		yml=$2
		;;
	makeRhapReference)
		cwl=make_rhap_reference
		yml=$2
		;;
	phiXContamination)
		cwl=PhiXContamination
		yml=$2
		;;
	*)
		echo "Invalid first argument."
		exit
		;;
esac

cwltool --preserve-entire-environment --no-container $parallel "${@:2:$#-2}" $d/cwl/$cwl.cwl "${@: -1}"
