let vcf_process_n_to_1_no_machine
~host
~vcftools
~(run_program : Machine.Make_fun.t)
?(more_edges = [])
~vcfs
~final_vcf
command_prefix
=
let open KEDSL in
let name = sprintf "%s-%s" command_prefix (Filename.basename final_vcf) in
let make =
run_program ~name
Program.(
Machine.Tool.(init vcftools)
&& shf "%s %s > %s"
command_prefix
(String.concat ~sep:" "
(List.map vcfs ~f:(fun t -> Filename.quote t#product#path)))
final_vcf
) in
workflow_node ~name
(single_file final_vcf ~host)
~make
~edges:(
on_failure_activate
(Remove.path_on_host ~host final_vcf)
:: depends_on Machine.Tool.(ensure vcftools)
:: List.map ~f:depends_on vcfs
@ more_edges)