#!/bin/bash -

#
# This script will start Artemis on a UNIX system.
#

QUIET=no

usage () {
    echo "SYNOPSIS"
    echo "        Artemis: Genome Browser and Annotation Tool"
    echo "USAGE"
    echo "        $0 [options] <SEQUENCE_FILE> [+FEATURE_FILE ...]"
    echo "OPTIONS"
    echo "        SEQUENCE_FILE                  An EMBL, GenBank, FASTA, or GFF3 file"
    echo "        FEATURE_FILE                   An Artemis TAB file, or GFF file"
    echo
    echo "        -options FILE                  Read a text file of options from FILE"
    echo "        -chado                         Connect to a Chado database (using PGHOST, PGPORT, PGDATABASE, PGUSER environment variables)"
    echo
    echo "        -Dblack_belt_mode=?            Keep warning messages to a minimum [true,false]"
    echo "        -Doffset=XXX                   Open viewer at base position XXX [integer >= 1]"
    echo "        -Duserplot=FILE[,FILE2]        Open one or more userplots"
    echo "        -Dloguserplot=FILE[,FILE2]     Open one or more userplots, take log(data)"
    echo "        -Dbam=FILE[,FILE2,...]         Open one or more BAM, CRAM, VCF or BCF files"
    echo "        -DbamClone=n                   Open all BAM, CRAM, VCF or BCF files in multiple (n > 1) panels"
    echo "        -Dbam[1,2,..]=FILE[,FILE2,..]  Open BAM, CRAM, VCF or BCF files in separate panels"
    echo "        -Dshow_snps                    Show SNP marks in BamView"
    echo "        -Dshow_snp_plot                Open SNP plot in BamView"
    echo "        -Dshow_cov_plot                Open coverage plot in BamView"
    echo "        -Dshow_forward_lines=?         Hide/show forward frame lines [true,false]"
    echo "        -Dshow_reverse_lines=?         Hide/show reverse frame lines [true,false]"
    echo "        -Dchado=\"h:p/d?u\"              Get Artemis to open this CHADO database"
    echo "        -Dread_only                    Open CHADO database read-only"
    echo "EXAMPLES"
    echo "        % art AJ006275.embl" 
    echo "        % art contigs.fa +annotation.gff +islands.tab"
    echo "        % art -Dblack_belt_mode=true -Dbam=ecoli_hiseq.bam E_coli_K12.gbk"
    echo "        % art -Duserplot=repeatmap.plot,geecee.plot Plasmid.gff3"
    echo "HOMEPAGE"
    echo "        http://www.sanger.ac.uk/science/tools/artemis"
    echo   
    
    exit 0
}

# Special Sanger override on chado PGUSER
if [[ "$ARTEMIS_SANGER_DBUSER" != "" ]]
then
	export PGUSER=$ARTEMIS_SANGER_DBUSER
fi

#
# Parse arguments.
#
APPLICATION_PROPERTIES="-Djdbc.drivers=org.postgresql.Driver -Dartemis.environment=UNIX $SANGER_ARTEMIS_OPTIONS"
while test $# != 0
do
    case $1 in
    	-options)   APPLICATION_PROPERTIES="$APPLICATION_PROPERTIES -Dextra_options=$2"; shift ;;
    	-chado)     APPLICATION_PROPERTIES="$APPLICATION_PROPERTIES -Dchado=$PGHOST:$PGPORT/$PGDATABASE?$PGUSER -Dibatis" ;;
	    -D*)        APPLICATION_PROPERTIES="$APPLICATION_PROPERTIES $1" ;;
	    -quiet)     QUIET=yes ; APPLICATION_PROPERTIES="$APPLICATION_PROPERTIES -Drun_quietly=true" ;;
	    -help)      usage ;;
	    --help)     usage ;;
	    -h)         usage ;;
	    *)          break ;;
    esac
    shift
done

#
# "-mx2g" sets the maximum amount of memory to use. 
# This may need to be increased when dealing with large files
#
if [[ "$ARTEMIS_JVM_FLAGS" = "" ]]
then
    FLAGS="-mx2g -ms100m -noverify"
else
    FLAGS="$ARTEMIS_JVM_FLAGS -noverify"
fi


#
# Temporary flags to avoid Java 9+ reflection warnings being written to the terminal.
# Should not be necessary when Ibatis is replaced.
#
FLAGS="$FLAGS --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED"

if [[ "$QUIET" = "no" ]]
then
    echo "Starting Artemis with arguments: $FLAGS $APPLICATION_PROPERTIES $*"
fi

java $FLAGS $APPLICATION_PROPERTIES -jar /usr/share/java/artemis.jar $*
result=$?

exit $result

