]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/metadata/extractor/extractor.ml
ocaml 3.09 transition
[helm.git] / helm / ocaml / metadata / extractor / extractor.ml
1 let _ = Helm_registry.load_from "extractor.conf.xml"
2
3 let usage () =
4   prerr_endline "
5
6 !! This binary should not be called by hand, use the extractor_manager. !!
7
8 usage: ./extractor[.opt] path owner
9
10 path: the path for the getter maps
11 owner: the owner of the tables to update
12
13 "
14
15 let _ = 
16   try
17     let _ = Sys.argv.(2), Sys.argv.(1) in
18     if Sys.argv.(1) = "-h"||Sys.argv.(1) = "-help"||Sys.argv.(1) = "--help" then
19       begin
20       usage ();
21       exit 1
22       end
23   with 
24     Invalid_argument _ -> usage (); exit 1
25
26 let owner = Sys.argv.(2)
27 let path = Sys.argv.(1)
28
29 let main () =
30   print_endline (Printf.sprintf "%d alive on path:%s owner:%s" 
31     (Unix.getpid()) path owner);
32   Helm_registry.set "tmp.dir" path;
33   Http_getter.init ();
34   let dbd =
35     HMysql.quick_connect 
36       ~host:(Helm_registry.get "db.host") 
37       ~user:(Helm_registry.get "db.user") 
38       ~database:(Helm_registry.get "db.database") ()
39   in
40   MetadataTypes.ownerize_tables owner;
41   let uris =
42     let ic = open_in (path ^ "/todo") in
43     let acc = ref [] in
44     (try
45       while true do
46         let l = input_line ic in
47         acc := l :: !acc
48       done
49     with
50       End_of_file -> ());
51     close_in ic;
52     !acc
53   in
54   let len = float_of_int (List.length uris) in
55   let i = ref 0 in
56   let magic = 45 in
57   List.iter (fun u ->
58     incr i;
59     let perc = ((float_of_int !i)  /. len *. 100.0) in
60     let l = String.length u in
61     let short = 
62       if l < magic then 
63         u ^ String.make (magic + 3 - l) ' ' 
64       else 
65         "..." ^  String.sub u (l - magic) magic
66     in
67     Printf.printf "%d (%d of %.0f = %3.1f%%): %s\n" 
68      (Unix.getpid ()) !i len perc short;
69     flush stdout;
70     let uri = UriManager.uri_of_string u in
71     MetadataDb.index_obj ~dbd ~uri;
72     CicEnvironment.empty ())
73   uris;
74   print_string "END "; Unix.system "date"
75 ;;
76
77 main ()
78