X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fwhenstate.ml;h=b5784db335ab1781cd3ae652786cbed14086d7bd;hb=d6da1b74e241e79eb0af9c01e390e98ceead3a49;hp=e3aad07c8b57a500cc02d45351b3278e5891615d;hpb=2f2b5efdf699e4bc0723079dcd2f68a0fd44ce07;p=whenjobs.git diff --git a/lib/whenstate.ml b/lib/whenstate.ml index e3aad07..b5784db 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 @@ -147,6 +160,9 @@ let get_everyjobs t = let get_job t jobname = StringMap.find jobname t.jobmap +let get_job_names t = + List.map (function { job_name = name } -> name) t.jobs + let evaluate_whenjob ?(onload = false) t job = match job with | { job_cond = Every_job _ } -> assert false