#! /bin/bash
VERSION=1.0.5
PREFIX=$1
RUNTYPE=$2
R1=$3
R2=$4
EXTRA=$5

# If no user input, print usage
if [[ $# == 0 ]]; then
    echo "bactopia-gather - v${VERSION}"
    echo ""
    echo "bactopia-gather <PREFIX> <OPT1> ... <OPTN>"
    echo ""
    exit
fi

if [[ "$1" == "version" ]] || [[ "$1" == "--version" ]]; then
    echo "bactopia-gather ${VERSION}"
    exit
fi

if [ "${RUNTYPE}" == "paired-end" ]; then
    # Paired-End Reads
    cp -L ${R1} fastqs/${PREFIX}_R1.fastq.gz
    cp -L ${R2} fastqs/${PREFIX}_R2.fastq.gz
    touch extra/empty.fna.gz
elif [ "${RUNTYPE}" == "single-end" ]; then
    # Single-End Reads
    cp -L ${R1} fastqs/${PREFIX}.fastq.gz
    touch extra/empty.fna.gz
elif [ "${RUNTYPE}" == "ont" ]; then
    # Nanopore reads
    cp -L ${R1} fastqs/${PREFIX}.fastq.gz
    touch extra/empty.fna.gz
elif  [ "${RUNTYPE}" == "hybrid" ]; then
    # Paired-End Reads
    cp -L ${R1} fastqs/${PREFIX}_R1.fastq.gz
    cp -L ${R2} fastqs/${PREFIX}_R2.fastq.gz
    cp -L ${EXTRA} extra/${PREFIX}.fastq.gz
elif [ "${RUNTYPE}" == "merge-pe" ] || [ "${RUNTYPE}" == "hybrid-merge-pe" ]; then 
    # Merge Paired-End Reads
    echo "This sample had reads merged." > ${MERGED}
    echo "R1:" >> ${MERGED}
    find -name "*r1" | sort | xargs -I {} readlink {} | xargs -I {} ls -l {} | awk '{print $5"\t"$9}' >> ${MERGED}
    find -name "*r1" | sort | xargs -I {} readlink {} | xargs -I {} cat {} > fastqs/${PREFIX}_R1.fastq.gz
    echo "Merged R1:" >> ${MERGED}
    ls -l fastqs/${PREFIX}_R1.fastq.gz | awk '{print $5"\t"$9}' >> ${MERGED}
    echo "R2:" >> ${MERGED}
    find -name "*r2" | sort | xargs -I {} readlink {} | xargs -I {} ls -l {} | awk '{print $5"\t"$9}' >> ${MERGED}
    find -name "*r2" | sort | xargs -I {} readlink {} | xargs -I {} cat {} > fastqs/${PREFIX}_R2.fastq.gz
    echo "Merged R2:" >> ${MERGED}
    ls -l fastqs/${PREFIX}_R2.fastq.gz | awk '{print $5"\t"$9}' >> ${MERGED}
    if [ "${RUNTYPE}" == "hybrid-merge-pe" ]; then
        cp -L ${EXTRA} extra/${PREFIX}.fastq.gz
    else
        touch extra/empty.fna.gz
    fi
elif [ "${RUNTYPE}" == "merge-se" ]; then 
    # Merge Single-End Reads
    echo "This sample had reads merged." > ${MERGED}
    echo "SE:" >> ${MERGED}
    find -name "*r1" | sort | xargs -I {} readlink {} | xargs -I {} ls -l {} | awk '{print $5"\t"$9}' >> ${MERGED}
    find -name "*r1" | sort | xargs -I {} readlink {} | xargs -I {} cat {} > fastqs/${PREFIX}.fastq.gz
    echo "Merged SE:" >> ${MERGED}
    ls -l fastqs/${PREFIX}.fastq.gz | awk '{print $5"\t"$9}' >> ${MERGED}
    touch extra/empty.fna.gz
elif [ "${RUNTYPE}" == "sra_accession" ] || [ "${RUNTYPE}" == "sra_accession_ont" ]; then
    # Download accession from ENA/SRA
    fastq-dl ${PREFIX} SRA \
        --cpus 1 \
        --outdir fastqs/ \
        --group_by_experiment \
        --is_experiment \
        --ftp_only
    touch extra/empty.fna.gz
fi
