X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Fmatitac.ml;h=d9300218375851113a45f246c6f4c467e2acfb07;hb=53ee2f5095adadffcafb40e436d23dc330d3bd87;hp=607fe703b065c1f122b0c17309c5cad997776736;hpb=f8b2057d349dd9903ad8b1dd05f894cb0fa14378;p=helm.git diff --git a/helm/matita/matitac.ml b/helm/matita/matitac.ml index 607fe703b..d93002183 100644 --- a/helm/matita/matitac.ml +++ b/helm/matita/matitac.ml @@ -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 @@ -72,7 +71,8 @@ let run_script fname = MatitaLog.debug ("Executing: ``" ^ stm ^ "''") in try - status := MatitaEngine.eval_from_stream !status is cb + status := MatitaEngine.eval_from_stream !status is cb ; + !status with | CicTextualParser2.Parse_error (floc,err) -> let (x, y) = CicAst.loc_of_floc floc in @@ -84,10 +84,42 @@ let run_script fname = raise exn let _ = - List.iter (fun fname -> - run_script fname; - MatitaLog.message (sprintf "execution of %s completed." fname)) scripts; - Http_getter.sync_dump_file (); - exit(0) - - + at_exit + (fun () -> + Http_getter_logger.log "Sync map tree to disk..."; + Http_getter.sync_dump_file (); + print_endline "\nThanks for using Matita!\n"); + Sys.catch_break true; + try + List.iter (fun fname -> + let time = Unix.time () in + MatitaLog.message (sprintf "execution of %s started:" fname); + let status = run_script fname in + 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 + let proof_status = status.proof_status in + if proof_status <> MatitaTypes.No_proof then + begin + MatitaLog.error + "there are still incomplete proofs at the end of the script"; + exit(-1) + end + else + begin + MatitaLog.message + (sprintf "execution of %s completed in %s." fname (hou^min^sec)) ; + exit(0) + end + ) scripts + with Sys.Break -> + MatitaLog.error "user break!"; + exit (-1)