X-Git-Url: http://git.annexia.org/?p=whenjobs.git;a=blobdiff_plain;f=lib%2Fwhenstate.ml;h=2bb030d4f76433a82e2a569e69136bd424a4a184;hp=e3aad07c8b57a500cc02d45351b3278e5891615d;hb=57d21a4a716b513d93790262db4a663c169814bd;hpb=50a4457bd64045abfdc88237a934fadff0bb7f84 diff --git a/lib/whenstate.ml b/lib/whenstate.ml index e3aad07..2bb030d 100644 --- a/lib/whenstate.ml +++ b/lib/whenstate.ml @@ -123,8 +123,21 @@ let get_variable_names t = let nr_jobs t = List.length t.jobs -let get_dependencies t name = - let jobnames = try StringMap.find name t.dependencies with Not_found -> [] in +let get_dependencies t names = + (* Get all job names that depend on these variables. *) + let jobnames = + List.map ( + fun name -> + try StringMap.find name t.dependencies with Not_found -> [] + ) names in + + (* Flatten the list and remove duplicates. *) + let set = List.fold_left ( + fun set jn -> StringSet.add jn set + ) StringSet.empty (List.flatten jobnames) in + let jobnames = StringSet.elements set in + + (* Convert job names to jobs. *) List.map (fun jn -> try let j = StringMap.find jn t.jobmap in