type variables = variable StringMap.t
+type preinfo = {
+ pi_job_name : string;
+ pi_serial : Big_int.big_int;
+ pi_variables : (string * variable) list;
+ pi_running : preinfo_running_job list;
+}
+and preinfo_running_job = {
+ pirun_job_name : string;
+ pirun_serial : Big_int.big_int;
+ pirun_start_time : float;
+ pirun_pid : int;
+}
+
+type result = {
+ res_job_name : string;
+ res_serial : Big_int.big_int;
+ res_code : int;
+ res_tmpdir : string;
+ res_output : string;
+ res_start_time : float;
+}
+
+type pre = preinfo -> bool
+type post = result -> unit
+
type job_cond =
| When_job of whenexpr
| Every_job of periodexpr
type job = {
job_loc : Loc.t;
job_name : string;
+ job_pre : pre option;
+ job_post : post option;
job_cond : job_cond;
job_script : shell_script;
}