Implement inequality operator (use: != or <>)
[whenjobs.git] / lib / whenexpr.mli
index 437192f..c84f091 100644 (file)
@@ -33,6 +33,7 @@ type whenexpr =
   | Expr_eq of whenexpr * whenexpr      (** == *)
   | Expr_ge of whenexpr * whenexpr      (** >= *)
   | Expr_gt of whenexpr * whenexpr      (** > *)
+  | Expr_ne of whenexpr * whenexpr      (** != *)
   | Expr_not of whenexpr                (** boolean not *)
   | Expr_add of whenexpr * whenexpr     (** arithmetic addition or string cat *)
   | Expr_sub of whenexpr * whenexpr     (** arithmetic subtraction *)
@@ -60,17 +61,6 @@ type shell_script = {
 }
 (** A shell script. *)
 
-type result = {
-  res_job_name : string;                (** Job name. *)
-  res_code : int;                       (** Return code from the script. *)
-  res_tmpdir : string;                  (** Temporary directory. *)
-  res_output : string;                  (** Filename of output from job. *)
-}
-(** Result of the run of a job. *)
-
-type cleanup = result -> unit
-(** A cleanup function. *)
-
 type variable =
   | T_unit
   | T_bool of bool
@@ -87,6 +77,34 @@ val rpc_of_variable : variable -> Whenproto_aux.variable
 type variables = variable Whenutils.StringMap.t
 (** A set of variables. *)
 
+type preinfo = {
+  pi_job_name : string;                 (** Job name. *)
+  pi_serial : Big_int.big_int;          (** Job serial number. *)
+  pi_variables : (string * variable) list; (** Variables set in job. *)
+  pi_running : preinfo_running_job list; (** List of running jobs. *)
+}
+and preinfo_running_job = {
+  pirun_job_name : string;              (** Running job name. *)
+  pirun_serial : Big_int.big_int;       (** Running job serial number. *)
+  pirun_start_time : float;             (** Running job start time. *)
+  pirun_pid : int;                      (** Running job process ID. *)
+}
+(** Information available to pre function before the job runs. *)
+
+type result = {
+  res_job_name : string;                (** Job name. *)
+  res_serial : Big_int.big_int;         (** Job serial number. *)
+  res_code : int;                       (** Return code from the script. *)
+  res_tmpdir : string;                  (** Temporary directory. *)
+  res_output : string;                  (** Filename of output from job. *)
+  res_start_time : float;               (** When the job started. *)
+}
+(** Result of the run of a job. *)
+
+type pre = preinfo -> bool
+type post = result -> unit
+(** Pre and post functions. *)
+
 type job_cond =
   | When_job of whenexpr                (** when ... : << >> *)
   | Every_job of periodexpr             (** every ... : << >> *)
@@ -94,7 +112,8 @@ type job_cond =
 type job = {
   job_loc : Camlp4.PreCast.Loc.t;
   job_name : string;
-  job_cleanup : cleanup option;
+  job_pre : pre option;
+  job_post : post option;
   job_cond : job_cond;
   job_script : shell_script;
 }