from os import listdir
from os.path import isfile, basename, splitext

rule all:
    input:
        "premapping/multiqc/multiqc_report.html",
        ".report/modules/multiqc.html"

rule fastqc:
    input:
        reads="preprocessing/{sample}.fastq.gz"
    output:
        "premapping/multiqc/fastqc/{sample}_fastqc.html",
        "premapping/multiqc/fastqc/{sample}_fastqc.zip"
    conda:
        "../lib/conda_env.yaml"
    group:
        "multiqc"
    threads:
        1
    shell:
        "fastqc -o premapping/multiqc/fastqc {input}"

rule multiqc:
    input:
        expand("premapping/multiqc/fastqc/{A}_fastqc.html", A=config['entries'].keys())
    output:
        html = "premapping/multiqc/multiqc_report.html",
        multiqc_dir = directory("premapping/multiqc/multiqc_data")
    conda:
        "../lib/conda_env.yaml"
    params:
        input_dir = "premapping/multiqc/fastqc",
        output_dir = "premapping/multiqc/"
    group:
        "multiqc"
    threads:
        1
    shell:
        "[ -e {output.html} ] && rm {output.html}; "
        "[ -e {output.multiqc_dir} ] && rm -r {output.multiqc_dir}; "
        "multiqc -o {params.output_dir} {params.input_dir}"

rule generate_report_data:
    input:
        html="premapping/multiqc/multiqc_report.html"
    output:
        report_html=".report/modules/multiqc.html"
    conda:
        "../lib/conda_env.yaml"
    group:
        "multiqc_report"
    shell:
        "cp {input} {output}"
