summaryrefslogtreecommitdiff
path: root/ocamldoc/odoc_opt.ml
blob: 6f90ce307bf04e9f18ca94cb208757a3c6c47cf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
(***********************************************************************)
(*                             OCamldoc                                *)
(*                                                                     *)
(*            Maxence Guesdon, projet Cristal, INRIA Rocquencourt      *)
(*                                                                     *)
(*  Copyright 2001 Institut National de Recherche en Informatique et   *)
(*  en Automatique.  All rights reserved.  This file is distributed    *)
(*  under the terms of the Q Public License version 1.0.               *)
(*                                                                     *)
(***********************************************************************)


(** Main module for native version.*)

open Config
open Clflags
open Misc
open Format
open Typedtree



let html_generator = new Odoc_html.html
let default_latex_generator = new Odoc_latex.latex
let default_man_generator = new Odoc_man.man
let default_iso_generator = new Odoc_iso.iso
let default_dot_generator = new Odoc_dot.dot
let _ = Odoc_args.parse
    (html_generator :> Odoc_args.doc_generator)
    (default_latex_generator :> Odoc_args.doc_generator)
    (default_man_generator :> Odoc_args.doc_generator)
    (default_iso_generator :> Odoc_args.doc_generator)
    (default_dot_generator :> Odoc_args.doc_generator)

let loaded_modules =
  List.flatten 
    (List.map 
       (fun f ->
	 Odoc_info.verbose (Odoc_messages.loading f);
	 try 
	   let l = Odoc_analyse.load_modules f in
	   Odoc_info.verbose Odoc_messages.ok;
	   l
	 with Failure s -> 
	   prerr_endline s ; 
	   incr Odoc_global.errors ;
	   []
       )
       !Odoc_args.load
    )

let modules = Odoc_analyse.analyse_files ~init: loaded_modules !Odoc_args.files

let _ =
  match !Odoc_args.dump with
    None -> ()
  | Some f ->
      try Odoc_analyse.dump_modules f modules
      with Failure s -> 
	prerr_endline s ;
	incr Odoc_global.errors

let _ = 
  match !Odoc_args.doc_generator with
    None ->
      ()
  | Some gen ->
      Odoc_info.verbose Odoc_messages.generating_doc;
      gen#generate modules;
      Odoc_info.verbose Odoc_messages.ok

let _ = 
  if !Odoc_global.errors > 0 then
  (
   prerr_endline (Odoc_messages.errors_occured !Odoc_global.errors) ;
   exit 1
  )
  else
    exit 0