#!/bin/sh
set -eu
if [ `basename -- $0` = picard-tools ]; then
	if [ $# = 0 ]; then
		cat 1>&2 <<EOF
picard-tools: missing command argument
Try \`picard-tools --help' for more information.
EOF
		exit 1
	fi
	command=`basename -- $1`
	shift
else
	command=`basename $0`
fi

case $command in
	AddOrReplaceReadGroups)         main=net.sf.picard.sam.AddOrReplaceReadGroups;;
	BamIndexStats)                  main=net.sf.picard.sam.BamIndexStats;;
	BamToBfq)                       main=net.sf.picard.fastq.BamToBfq;;
	BuildBamIndex)                  main=net.sf.picard.sam.BuildBamIndex;;
	CalculateHsMetrics)             main=net.sf.picard.analysis.directed.CalculateHsMetrics;;
	CheckIlluminaDirectory)         main=net.sf.picard.illumina.CheckIlluminaDirectory;;
	CleanSam)                       main=net.sf.picard.sam.CleanSam;;
	CollectAlignmentSummaryMetrics) main=net.sf.picard.analysis.CollectAlignmentSummaryMetrics;;
	CollectGcBiasMetrics)           main=net.sf.picard.analysis.CollectGcBiasMetrics;;
	CollectInsertSizeMetrics)       main=net.sf.picard.analysis.CollectInsertSizeMetrics;;
	CollectMultipleMetrics)         main=net.sf.picard.analysis.CollectMultipleMetrics;;
	CollectRnaSeqMetrics)           main=net.sf.picard.analysis.CollectRnaSeqMetrics;;
	CollectTargetedPcrMetrics)      main=net.sf.picard.analysis.CollectTargetedPcrMetrics;;
	CompareSAMs)                    main=net.sf.picard.sam.CompareSAMs;;
	CreateSequenceDictionary)       main=net.sf.picard.sam.CreateSequenceDictionary;;
	DownsampleSam)                  main=net.sf.picard.sam.DownsampleSam;;
	EstimateLibraryComplexity)      main=net.sf.picard.sam.EstimateLibraryComplexity;;
	ExtractIlluminaBarcodes)        main=net.sf.picard.illumina.ExtractIlluminaBarcodes;;
	ExtractSequences)               main=net.sf.picard.reference.ExtractSequences;;
	FastqToSam)                     main=net.sf.picard.sam.FastqToSam;;
	FilterSamReads)                 main=net.sf.picard.sam.FilterSamReads;;
	FixMateInformation)             main=net.sf.picard.sam.FixMateInformation;;
	IlluminaBasecallsToFastq)       main=net.sf.picard.illumina.IlluminaBasecallsToFastq;;
	IlluminaBasecallsToSam)         main=net.sf.picard.illumina.IlluminaBasecallsToSam;;
	IntervalListTools)              main=net.sf.picard.util.IntervalList;;
	MarkDuplicates)                 main=net.sf.picard.sam.MarkDuplicates;;
	MeanQualityByCycle)             main=net.sf.picard.analysis.MeanQualityByCycle;;
	MergeBamAlignment)              main=net.sf.picard.sam.MergeBamAlignment;;
	MergeSamFiles)                  main=net.sf.picard.sam.MergeSamFiles;;
	MergeVcfs)                      main=net.sf.picard.vcf.MergeVcfs;;
	NormalizeFasta)                 main=net.sf.picard.reference.NormalizeFasta;;
	QualityScoreDistribution)       main=net.sf.picard.analysis.QualityScoreDistribution;;
	ReorderSam)                     main=net.sf.picard.sam.ReorderSam;;
	ReplaceSamHeader)               main=net.sf.picard.sam.ReplaceSamHeader;;
	RevertSam)                      main=net.sf.picard.sam.RevertSam;;
	SamFormatConverter)             main=net.sf.picard.sam.SamFormatConverter;;
	SamToFastq)                     main=net.sf.picard.sam.SamToFastq;;
	SortSam)                        main=net.sf.picard.sam.SortSam;;
	SplitVcfs)                      main=net.sf.picard.vcf.SplitVcfs;;
	ValidateSamFile)                main=net.sf.picard.sam.ValidateSamFile;;
	VcfFormatConverter)             main=net.sf.picard.vcf.VcfFormatConverter;;
	ViewSam)                        main=net.sf.picard.sam.ViewSam;;

	--help)
		cat <<EOF
Usage: picard-tools COMMAND [OPTION]...
See \`man picard-tools' for a list of COMMANDs.
EOF
		exit 0;;
	--version)
		cat <<EOF
picard-tools
Copyright 2010 The Broad Institute
EOF
		exit 0;;
	*) echo 1>&2 picard-tools: unrecognized command "'$command'"; exit 1
esac

p=/usr/share/java
exec java ${JAVA_OPTIONS-} -XX:MaxPermSize=256m -cp $p/jbzip2.jar:$p/picard.jar:$p/sam.jar:$p/cofoja.jar:$p/commons-jexl2.jar $main "$@"
