]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/matitac.ml
added chronometer
[helm.git] / helm / matita / matitac.ml
index 4dbac36539ac238afd0ddcc8f6e8a73d477211bf..ef0ab5a99ccf6fcbb170294ad0b0343e9add02a4 100644 (file)
@@ -50,7 +50,6 @@ let scripts =
   List.rev !acc
 
 let run_script fname =
-  MatitaLog.message (sprintf "execution of %s started:" fname);
   let is =
     Stream.of_channel
       (match fname with
@@ -58,32 +57,50 @@ let run_script fname =
       | fname -> open_in fname)
   in
   let status = ref (Lazy.force MatitaEngine.initial_status) in
+  let slash_n_RE = Pcre.regexp "\\n" in
+  let cb status stm = 
+    (* dump_status status; *)
+    let stm = TacticAstPp.pp_statement stm in
+    let stm = Pcre.replace ~rex:slash_n_RE stm in
+    let stm = 
+      if String.length stm > 50 then
+        String.sub stm 0 50 ^ " ..."
+      else
+        stm
+    in
+    MatitaLog.debug ("Executing: ``" ^ stm ^ "''")
+  in
   try
-    while true do
-      dump_status !status;
-      try
-        status := MatitaEngine.eval_from_stream !status is
-      with
-      | CicTextualParser2.Parse_error _ as exn -> 
-          try 
-            Stream.empty is; 
-            raise  End_of_file
-          with Stream.Failure -> raise exn
-      | exn -> 
-          MatitaLog.error (Printexc.to_string exn);
-          raise exn
-    done
-  with 
-    | End_of_file ->
-        MatitaLog.message (sprintf "execution of %s completed." fname);
-        Http_getter.sync_dump_file ();
-        exit(0)
-    | CicTextualParser2.Parse_error (floc,err) ->
-        let (x, y) = CicAst.loc_of_floc floc in
-        MatitaLog.message (sprintf "Parse error at %d-%d: %s" x y err);
-        Http_getter.sync_dump_file ();
-        exit 1
+    status := MatitaEngine.eval_from_stream !status is cb
+  with
+  | CicTextualParser2.Parse_error (floc,err) ->
+     let (x, y) = CicAst.loc_of_floc floc in
+     MatitaLog.message (sprintf "Parse error at %d-%d: %s" x y err);
+     Http_getter.sync_dump_file ();
+     exit 1
+  | exn -> 
+      MatitaLog.error (Printexc.to_string exn);
+      raise exn
         
-
-let _ = List.iter run_script scripts
+let _ = 
+  List.iter (fun fname -> 
+    let time = Unix.time () in
+    MatitaLog.message (sprintf "execution of %s started:" fname);
+    run_script fname;
+    let elapsed = Unix.time () -. time in
+    let tm = Unix.gmtime elapsed in
+    let sec = 
+      if tm.Unix.tm_sec > 0 then  (string_of_int tm.Unix.tm_sec ^ "''") else "" 
+    in
+    let min = 
+      if tm.Unix.tm_min > 0 then  (string_of_int tm.Unix.tm_min ^ "' ") else "" 
+    in
+    let hou = 
+      if tm.Unix.tm_hour > 0 then (string_of_int tm.Unix.tm_hour ^ "h ") else "" 
+    in
+    MatitaLog.message 
+      (sprintf "execution of %s completed in %s." fname (hou^min^sec))) scripts;
+  Http_getter.sync_dump_file ();
+  exit(0)
+