]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/matitaInit.ml
λδ site update
[helm.git] / helm / software / matita / matitaInit.ml
index c25113f26f1a32612ce41fc063a5cdb448c54125..70125f54c222bb5dc3c3d146a8a7cc8aecfee294 100644 (file)
 
 (* $Id$ *)
 
-type thingsToInitilaize = 
-  ConfigurationFile | Db | Environment | Getter | Makelib | CmdLine | Registry
+type thingsToInitialize = 
+  ConfigurationFile | Db | Environment | Getter | CmdLine | Registry
   
-exception FailedToInitialize of thingsToInitilaize
+exception FailedToInitialize of thingsToInitialize
 
 let wants s l = 
   List.iter (
@@ -44,19 +44,23 @@ let conffile = ref BuildTimeConf.matita_conf
 
 let registry_defaults = [
   "matita.debug",                "false";
+  "matita.debug_menu",           "false";
   "matita.external_editor",      "gvim -f -c 'go %p' %f";
-  "matita.preserve",             "false";
   "matita.profile",              "true";
   "matita.system",               "false";
-  "matita.verbosity",            "1";
-  "matita.bench",                "false";
-  "matita.paste_unicode_as_tex", "false"
-    (** verbosity level: 1 is the default, 0 is intuitively "quiet", > 1 is
-     * intuitively verbose *)
+  "matita.verbose",              "false";
+  "matita.paste_unicode_as_tex", "false";
+  "matita.noinnertypes",         "false";
+  "matita.do_heavy_checks",      "true";
+  "matita.moo",                  "true";
+  "matita.extract",              "false";
+  "matita.execcomments",         "false";
 ]
 
 let set_registry_values =
-  List.iter (fun key, value -> Helm_registry.set ~key ~value)
+  List.iter 
+    (fun key, value -> 
+       if not (Helm_registry.has key) then Helm_registry.set ~key ~value)
 
 let fill_registry init_status =
   if not (already_configured [ Registry ] init_status) then begin
@@ -101,16 +105,6 @@ let initialize_db init_status =
   else
     init_status
 
-let initialize_makelib init_status = 
-  wants [ConfigurationFile] init_status;
-  if not (already_configured [Makelib] init_status) then
-    begin
-      MatitamakeLib.initialize (); 
-      Makelib::init_status
-    end
-  else
-    init_status
-
 let initialize_environment init_status = 
   wants [CmdLine] init_status;
   if not (already_configured [Getter;Environment] init_status) then
@@ -135,76 +129,29 @@ let _ =
   List.iter
     (fun (name, s) -> Hashtbl.replace usages name s)
     [ "matitac", 
-        Printf.sprintf "MatitaC v%s
+        Printf.sprintf "Matita batch compiler v%s
 Usage: matitac [ OPTION ... ] FILE
 Options:"
           BuildTimeConf.version;
-      "gragrep",
-        Printf.sprintf "Grafite Grep v%s
-Usage: gragrep [ -r ] PATH
-Options:"
-          BuildTimeConf.version;
-      "matitaprover",
-        Printf.sprintf "Matita's prover v%s
+        "matitaprover",
+        Printf.sprintf "Matita (TPTP) prover v%s
 Usage: matitaprover [ -tptppath ] FILE.p
 Options:"
           BuildTimeConf.version;
       "matita",
-        Printf.sprintf "Matita v%s
-Usage: matita [ OPTION ... ] [ FILE ... ]
-Options:"
-          BuildTimeConf.version;
-      "cicbrowser",
-        Printf.sprintf
-          "CIC Browser v%s
-Usage: cicbrowser [ URL | WHELP QUERY ]
+        Printf.sprintf "Matita interactive theorem prover v%s
+Usage: matita [ OPTION ... ] [ FILE ]
 Options:"
           BuildTimeConf.version;
       "matitadep",
-        Printf.sprintf "MatitaDep v%s
-Usage: matitadep [ OPTION ... ] FILE ...
+        Printf.sprintf "Matita depency file generator v%s
+Usage: matitadep [ OPTION ... ] 
 Options:"
           BuildTimeConf.version;
       "matitaclean",
         Printf.sprintf "MatitaClean v%s
 Usage: matitaclean all
-       matitaclean [ (FILE | URI) ... ]
-Options:"
-          BuildTimeConf.version;
-      "matitamake",
-        Printf.sprintf "MatitaMake v%s
-Usage: matitamake [ OPTION ... ] (init | clean | list | destroy | build)
-  init
-    Parameters: name (the name of the development, required)
-                root (the directory in which the delopment is rooted, 
-                      optional, default is current working directory)
-    Description: tells matitamake that a new development radicated 
-      in the current working directory should be handled.
-  clean
-    Parameters: name (the name of the development to destroy, optional)
-      If omitted the development that holds the current working 
-      directory is used (if any).
-    Description: clean the develpoment.
-  list
-    Parameters: 
-    Description: lists the known developments and their roots.
-  destroy
-    Parameters: name (the name of the development to destroy, required)
-    Description: deletes a development (only from matitamake metadat, no
-      .ma files will be deleted).
-  build
-    Parameters: name (the name of the development to build, required)
-    Description: completely builds the develpoment.
-  publish
-    Parameters: name (the name of the development to publish, required)
-    Description: cleans the development in the user space, rebuilds it
-      in the system space ('ro' repositories, that for this operation 
-      becames writable). 
-Notes:
-  If target is omitted an 'all' will be used as the default.
-  With -build you can build a development wherever it is.
-  If you specify a target it implicitly refers to the development that
-  holds the current working directory (if any).
+       matitaclean ( FILE | URI )
 Options:"
           BuildTimeConf.version;
     ]
@@ -218,6 +165,7 @@ let usage () =
     try Filename.chop_extension basename with Invalid_argument  _ -> basename
   in
   try Hashtbl.find usages usage_key with Not_found -> default_usage
+;;
 
 let extra_cmdline_specs = ref []
 let add_cmdline_spec l = extra_cmdline_specs := l @ !extra_cmdline_specs
@@ -227,27 +175,32 @@ let parse_cmdline init_status =
     wants [Registry] init_status;
     let includes = ref [] in
     let default_includes = [ 
-      ".";
       BuildTimeConf.stdlib_dir_devel;
-      BuildTimeConf.stdlib_dir_installed ; ] 
+      BuildTimeConf.stdlib_dir_installed ; 
+      BuildTimeConf.new_stdlib_dir_devel;
+      BuildTimeConf.new_stdlib_dir_installed ; 
+    ] 
     in
     let absolutize s =
-      if Pcre.pmatch ~pat:"^/" s then s else Sys.getcwd() ^"/"^s
+      if Pcre.pmatch ~pat:"^/" s then s else Sys.getcwd () ^"/"^s
     in
     let args = ref [] in
     let add_l l = fun s -> l := s :: !l in
-    let reduce_verbosity () =
-      Helm_registry.set_int "matita.verbosity"
-        (Helm_registry.get_int "matita.verbosity" - 1) in
     let print_version () =
             Printf.printf "%s\n" BuildTimeConf.version;exit 0 in
-    let increase_verbosity () =
-      Helm_registry.set_int "matita.verbosity"
-        (Helm_registry.get_int "matita.verbosity" + 1) in
     let no_innertypes () =
-      Helm_registry.set_bool "matita.noinnertypes" false in
+      Helm_registry.set_bool "matita.noinnertypes" true in
+    let set_baseuri s =
+      match Str.split (Str.regexp "::") s with
+      | [path; uri] -> Helm_registry.set "matita.baseuri"
+          (HExtlib.normalize_path (absolutize path)^" "^uri)
+      | _ -> raise (Failure "bad baseuri, use -b 'path::uri'")
+    in
+    let no_default_includes = ref false in
+    let execcomments = ref false in
     let arg_spec =
       let std_arg_spec = [
+        "-b", Arg.String set_baseuri, "<path::uri> forces the baseuri of path";
         "-I", Arg.String (add_l includes),
           ("<path> Adds path to the list of searched paths for the "
            ^ "include command");
@@ -266,19 +219,18 @@ let parse_cmdline init_status =
         "-profile-only",
           Arg.String (fun rex -> Helm_registry.set "matita.profile_only" rex),
           "Activates only profiler with label matching the provided regex";
-        "-bench", 
-          Arg.Unit (fun () -> Helm_registry.set_bool "matita.bench" true),
-          "Turns on parsable output on stdout, that is timings for matitac...";
-        "-preserve",
-          Arg.Unit (fun () -> Helm_registry.set_bool "matita.preserve" true),
-          "Turns off automatic baseuri cleaning";
-        "-q", Arg.Unit reduce_verbosity, "Reduce verbosity";
         "-system", Arg.Unit (fun () ->
               Helm_registry.set_bool "matita.system" true),
             ("Act on the system library instead of the user one"
              ^ "\n    WARNING: not for the casual user");
-        "-v", Arg.Unit increase_verbosity, "Increase verbosity";
-        "--version", Arg.Unit print_version, "Prints version";
+        "-no-default-includes", Arg.Set no_default_includes,
+          "Do not include the default searched paths for the include command"; 
+        "-execcomments", Arg.Set execcomments,
+          "Execute the content of (** ... *) comments";
+       "-v", 
+          Arg.Unit (fun () -> Helm_registry.set_bool "matita.verbose" true), 
+          "Verbose mode";
+        "--version", Arg.Unit print_version, "Prints version"
       ] in
       let debug_arg_spec =
         if BuildTimeConf.debug then
@@ -287,7 +239,7 @@ let parse_cmdline init_status =
               ("Do not catch top-level exception "
               ^ "(useful for backtrace inspection)");
            "-onepass",
-           Arg.Unit (fun () -> GrafiteDisambiguator.only_one_pass := true),
+           Arg.Unit (fun () -> MultiPassDisambiguator.only_one_pass := true),
            "Enable only one disambiguation pass";    
           ]
         else []
@@ -298,8 +250,12 @@ let parse_cmdline init_status =
       Helm_registry.set_list Helm_registry.of_string ~key ~value:l
     in
     Arg.parse arg_spec (add_l args) (usage ());
+    Helm_registry.set_bool ~key:"matita.execcomments" ~value:!execcomments;
+    let default_includes = if !no_default_includes then [] else default_includes in
     let includes = 
-      List.map absolutize ((List.rev !includes) @ default_includes) in
+      List.map (fun x -> HExtlib.normalize_path (absolutize x)) 
+       ((List.rev !includes) @ default_includes) 
+    in
     set_list ~key:"matita.includes" includes;
     let args = List.rev (List.filter (fun x -> x <> "") !args) in
     set_list ~key:"matita.args" args;
@@ -322,18 +278,13 @@ let conf_components =
   [ load_configuration; fill_registry; parse_cmdline]
 
 let other_components =
-  [ initialize_makelib; initialize_db; initialize_environment ]
+  [ initialize_db; initialize_environment ]
 
 let initialize_all () =
   status := 
     List.fold_left (fun s f -> f s) !status
-    (conf_components @ other_components)
-(*     initialize_notation 
-      (initialize_environment 
-        (initialize_db 
-          (initialize_makelib
-            (load_configuration
-              (parse_cmdline !status))))) *)
+    (conf_components @ other_components);
+  NCicLibrary.init ()
 
 let parse_cmdline_and_configuration_file () =
   status := List.fold_left (fun s f -> f s) !status conf_components
@@ -342,4 +293,8 @@ let initialize_environment () =
   status := initialize_environment !status
 
 let _ =
-  Inversion_principle.init ()
+  CicFix.init ();
+  Inversion_principle.init ();
+  CicRecord.init ();
+  CicElim.init ()
+;;