# Test workflow with conditional logic based on wildcards
# Tests: wildcard-dependent behavior, conditional outputs

SAMPLES = ["control", "treatment1", "treatment2"]

def get_extra_processing(wildcards):
    """Control samples need extra processing."""
    if wildcards.sample == "control":
        return "output/{sample}.normalized.txt".format(sample=wildcards.sample)
    return []

rule all:
    input:
        expand("output/{sample}.final.txt", sample=SAMPLES)

rule initial_process:
    output: "output/{sample}.initial.txt"
    shell: "echo 'Initial: {wildcards.sample}' > {output}"

rule normalize:
    """Only run for control samples."""
    input: "output/{sample}.initial.txt"
    output: "output/{sample}.normalized.txt"
    shell: "echo 'Normalized: {wildcards.sample}' > {output}"

rule finalize:
    input:
        initial="output/{sample}.initial.txt",
        extra=get_extra_processing
    output: "output/{sample}.final.txt"
    shell:
        """
        cat {input.initial} > {output}
        if [ -n "{input.extra}" ]; then
            cat {input.extra} >> {output}
        fi
        echo 'Finalized' >> {output}
        """
