-let rec interactive_loop () =
- let str = Ulexing.from_utf8_channel stdin in
- try
- run_script str
- (MatitaEngine.eval_from_stream ~first_statement_only:false ~prompt:true
- ~include_paths:(Helm_registry.get_list Helm_registry.string
- "matita.includes"))
- with
- | GrafiteEngine.Drop -> pp_ocaml_mode ()
- | GrafiteEngine.Macro (floc, f) ->
- begin match f (get_macro_context !grafite_status) with
- | _, GrafiteAst.Inline (_, style, suri, prefix) ->
- let str =
- ApplyTransformation.txt_of_inline_macro style suri prefix
- ~map_unicode_to_tex:(Helm_registry.get_bool
- "matita.paste_unicode_as_tex")
- in
- !out str;
- interactive_loop ()
- | _ ->
- let x, y = HExtlib.loc_of_floc floc in
- HLog.error (sprintf "A macro has been found in a script at %d-%d" x y);
- interactive_loop ()
- end
- | Sys.Break -> HLog.error "user break!"; interactive_loop ()
- | GrafiteTypes.Command_error _ -> interactive_loop ()
- | End_of_file ->
- print_newline ();
- clean_exit (Some 0)
- | HExtlib.Localized (floc,CicNotationParser.Parse_error err) ->
- let x, y = HExtlib.loc_of_floc floc in
- HLog.error (sprintf "Parse error at %d-%d: %s" x y err);
- interactive_loop ()
- | exn -> HLog.error (Printexc.to_string exn); interactive_loop ()
-
-let go () =
- Helm_registry.load_from BuildTimeConf.matita_conf;
- Http_getter.init ();
- MetadataTypes.ownerize_tables (Helm_registry.get "matita.owner");
- LibraryDb.create_owner_environment ();
- CicEnvironment.set_trust (* environment trust *)
- (let trust =
- Helm_registry.get_opt_default Helm_registry.get_bool
- ~default:true "matita.environment_trust" in
- fun _ -> trust);
- let include_paths =
- Helm_registry.get_list Helm_registry.string "matita.includes" in
- grafite_status := Some (GrafiteSync.init ());
- lexicon_status :=
- Some (CicNotation2.load_notation ~include_paths
- BuildTimeConf.core_notation_script);
- Sys.catch_break true;
- interactive_loop ()
-
-let pp_times fname bench_mode rc big_bang =
- if bench_mode then
- begin
- let { Unix.tms_utime = u ; Unix.tms_stime = s} = Unix.times () in
- let r = Unix.gettimeofday () -. big_bang in
- let extra = try Sys.getenv "BENCH_EXTRA_TEXT" with Not_found -> "" in
- let cc =
- if Str.string_match (Str.regexp ".*opt$") Sys.argv.(0) 0 then
- "matitac.opt"
- else
- "matitac"
- in
- let rc = if rc then "\e[0;32mOK\e[0m" else "\e[0;31mFAIL\e[0m" in
- let times =
- let fmt t =
- let seconds = int_of_float t in
- let cents = int_of_float ((t -. floor t) *. 100.0) in
- let minutes = seconds / 60 in
- let seconds = seconds mod 60 in
- Printf.sprintf "%dm%02d.%02ds" minutes seconds cents
- in
- Printf.sprintf "%s %s %s" (fmt r) (fmt u) (fmt s)
- in
- let fname =
- match MatitamakeLib.development_for_dir (Filename.dirname fname) with
- | None -> fname
- | Some d ->
- let rootlen = String.length(MatitamakeLib.root_for_development d)in
- let fnamelen = String.length fname in
- assert (fnamelen > rootlen);
- String.sub fname rootlen (fnamelen - rootlen)
+let pp_times fname rc big_bang =
+ if not (Helm_registry.get_bool "matita.verbose") then
+ let { Unix.tms_utime = u ; Unix.tms_stime = s} = Unix.times () in
+ let r = Unix.gettimeofday () -. big_bang in
+ let extra = try Sys.getenv "BENCH_EXTRA_TEXT" with Not_found -> "" in
+ let rc,rcascii =
+ if rc then "\e[0;32mOK\e[0m","Ok" else "\e[0;31mFAIL\e[0m","Fail" in
+ let times =
+ let fmt t =
+ let seconds = int_of_float t in
+ let cents = int_of_float ((t -. floor t) *. 100.0) in
+ let minutes = seconds / 60 in
+ let seconds = seconds mod 60 in
+ Printf.sprintf "%dm%02d.%02ds" minutes seconds cents