# Checkpoint workflow with dynamic DAG
# Tests dynamic job creation based on intermediate results

checkpoint create_samples:
    output:
        directory("output/samples")
    shell:
        """
        mkdir -p {output}
        for i in 1 2 3; do
            echo "sample_$i" > {output}/sample_$i.txt
        done
        """

def get_sample_files(wildcards):
    """Get all sample files created by checkpoint."""
    checkpoint_output = checkpoints.create_samples.get(**wildcards).output[0]
    samples = glob_wildcards(f"{checkpoint_output}/{{sample}}.txt").sample
    return expand("output/processed/{sample}.done", sample=samples)

rule all:
    input:
        get_sample_files

rule process_sample:
    input:
        "output/samples/{sample}.txt"
    output:
        "output/processed/{sample}.done"
    shell:
        """
        mkdir -p output/processed
        echo "Processed $(cat {input})" > {output}
        """
