forked from rescript-lang/rescript-vscode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ml
63 lines (52 loc) · 1.59 KB
/
main.ml
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
let docHelp =
{|ReScript Tools
Output documentation to standard output
Usage: rescript-tools doc <FILE>
Example: rescript-tools doc ./path/to/EntryPointLib.res|}
let help =
{|ReScript Tools
Usage: rescript-tools [command]
Commands:
doc <file> Generate documentation
reanalyze Reanalyze
-v, --version Print version
-h, --help Print help|}
let logAndExit = function
| Ok log ->
Printf.printf "%s\n" log;
exit 0
| Error log ->
Printf.eprintf "%s\n" log;
exit 1
let version = Version.version
let main () =
match Sys.argv |> Array.to_list |> List.tl with
| "doc" :: rest -> (
match rest with
| ["-h"] | ["--help"] -> logAndExit (Ok docHelp)
| [path] ->
(* NOTE: Internal use to generate docs from compiler *)
let () =
match Sys.getenv_opt "FROM_COMPILER" with
| Some "true" -> Analysis.Cfg.isDocGenFromCompiler := true
| _ -> ()
in
logAndExit (Tools.extractDocs ~entryPointFile:path ~debug:false)
| _ -> logAndExit (Error docHelp))
| "reanalyze" :: _ ->
let len = Array.length Sys.argv in
for i = 1 to len - 2 do
Sys.argv.(i) <- Sys.argv.(i + 1)
done;
Sys.argv.(len - 1) <- "";
Reanalyze.cli ()
| "extract-embedded" :: extPointNames :: filename :: _ ->
logAndExit
(Ok
(Tools.extractEmbedded
~extensionPoints:(extPointNames |> String.split_on_char ',')
~filename))
| ["-h"] | ["--help"] -> logAndExit (Ok help)
| ["-v"] | ["--version"] -> logAndExit (Ok version)
| _ -> logAndExit (Error help)
let () = main ()