Skip to content

Commit d8e8e72

Browse files
panglesdjonludlam
authored andcommitted
ocamlformatting
Signed-off-by: Paul-Elliot <[email protected]>
1 parent 26168b7 commit d8e8e72

15 files changed

+558
-465
lines changed

src/driver/compile.ml

Lines changed: 88 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
type ty = Module of Packages.modulety | Mld of Packages.mld
44

5-
type impl = { impl_odoc : Fpath.t; impl_odocl: Fpath.t; src : Fpath.t }
5+
type impl = { impl_odoc : Fpath.t; impl_odocl : Fpath.t; src : Fpath.t }
66

77
type pkg_args = {
88
docs : (string * Fpath.t) list;
@@ -69,7 +69,7 @@ let init_stats (pkgs : Packages.t Util.StringMap.t) =
6969

7070
open Eio.Std
7171

72-
type partial =
72+
type partial =
7373
(string * compiled) list * (string * Packages.modulety) Util.StringMap.t
7474

7575
let unmarshal filename =
@@ -87,26 +87,34 @@ let marshal (v : partial) filename =
8787

8888
let find_partials odoc_dir =
8989
let tbl = Hashtbl.create 1000 in
90-
let hashes_result = Bos.OS.Dir.fold_contents ~dotfiles:false
91-
(fun p hashes ->
92-
if Fpath.filename p = "index.m"
93-
then
94-
let (tbl', hashes') = unmarshal p in
95-
List.iter (fun (k,v) -> Hashtbl.replace tbl k (Promise.create_resolved (Ok v))) tbl';
96-
Util.StringMap.union (fun _x o1 _o2 -> Some o1) hashes hashes'
97-
else hashes) Util.StringMap.empty odoc_dir in
90+
let hashes_result =
91+
Bos.OS.Dir.fold_contents ~dotfiles:false
92+
(fun p hashes ->
93+
if Fpath.filename p = "index.m" then (
94+
let tbl', hashes' = unmarshal p in
95+
List.iter
96+
(fun (k, v) ->
97+
Hashtbl.replace tbl k (Promise.create_resolved (Ok v)))
98+
tbl';
99+
Util.StringMap.union (fun _x o1 _o2 -> Some o1) hashes hashes')
100+
else hashes)
101+
Util.StringMap.empty odoc_dir
102+
in
98103
match hashes_result with
99-
| Ok h -> h, tbl
100-
| Error _ -> (* odoc_dir doesn't exist...? *) Util.StringMap.empty, tbl
104+
| Ok h -> (h, tbl)
105+
| Error _ -> (* odoc_dir doesn't exist...? *) (Util.StringMap.empty, tbl)
101106

102107
let compile partial ~output_dir ?linked_dir all =
103108
let linked_dir = Option.value linked_dir ~default:output_dir in
104109
let hashes = mk_byhash all in
105110
let other_hashes, tbl =
106111
match partial with
107112
| Some _ -> find_partials output_dir
108-
| None -> Util.StringMap.empty, Hashtbl.create 10 in
109-
let all_hashes = Util.StringMap.union (fun _x o1 _o2 -> Some o1) hashes other_hashes in
113+
| None -> (Util.StringMap.empty, Hashtbl.create 10)
114+
in
115+
let all_hashes =
116+
Util.StringMap.union (fun _x o1 _o2 -> Some o1) hashes other_hashes
117+
in
110118
let pkg_args =
111119
let docs, libs =
112120
Util.StringMap.fold
@@ -115,7 +123,8 @@ let compile partial ~output_dir ?linked_dir all =
115123
let lib =
116124
List.map
117125
(fun lib ->
118-
( lib.Packages.lib_name, Fpath.(output_dir // lib.Packages.odoc_dir )))
126+
( lib.Packages.lib_name,
127+
Fpath.(output_dir // lib.Packages.odoc_dir) ))
119128
pkg.Packages.libraries
120129
in
121130
let docs = doc :: docs and libs = List.rev_append lib libs in
@@ -165,7 +174,12 @@ let compile partial ~output_dir ?linked_dir all =
165174
Odoc.compile_impl ~output_dir ~input_file:impl.mip_path
166175
~includes ~parent_id:impl.mip_parent_id ~source_id:si.src_id;
167176
Atomic.incr Stats.stats.compiled_impls;
168-
Some { impl_odoc = odoc_file; impl_odocl=odocl_file; src = si.src_path }
177+
Some
178+
{
179+
impl_odoc = odoc_file;
180+
impl_odocl = odocl_file;
181+
src = si.src_path;
182+
}
169183
| None -> None)
170184
| None -> None
171185
in
@@ -203,81 +217,77 @@ let compile partial ~output_dir ?linked_dir all =
203217
in
204218
let to_build = Util.StringMap.bindings hashes |> List.map fst in
205219
let mod_results = Fiber.List.map compile to_build in
206-
let zipped_res = List.map2 (fun a b -> (a,b)) to_build mod_results in
207-
let zipped = List.filter_map (function (a, Ok b) -> Some (a,b) | _ -> None) zipped_res in
220+
let zipped_res = List.map2 (fun a b -> (a, b)) to_build mod_results in
221+
let zipped =
222+
List.filter_map (function a, Ok b -> Some (a, b) | _ -> None) zipped_res
223+
in
208224
let mods =
209225
List.filter_map (function Ok x -> Some x | Error _ -> None) mod_results
210226
in
211-
let result = Util.StringMap.fold
212-
(fun package_name (pkg : Packages.t) acc ->
213-
Logs.debug (fun m ->
214-
m "Package %s mlds: [%a]" pkg.name
215-
Fmt.(list ~sep:sp Packages.pp_mld)
216-
pkg.mlds);
217-
List.fold_left
218-
(fun acc (mld : Packages.mld) ->
219-
let odoc_file = Fpath.(output_dir // mld.Packages.mld_odoc_file) in
220-
let odocl_file = Fpath.(linked_dir // mld.Packages.mld_odocl_file) in
221-
let odoc_output_dir = Fpath.split_base odoc_file |> fst in
222-
Odoc.compile ~output_dir ~input_file:mld.mld_path
223-
~includes:Fpath.Set.empty ~parent_id:mld.mld_parent_id;
224-
Atomic.incr Stats.stats.compiled_mlds;
225-
let include_dirs =
226-
List.map (fun f -> Fpath.(output_dir // f)) mld.mld_deps
227-
|> Fpath.Set.of_list
228-
in
229-
let include_dirs = Fpath.Set.add odoc_output_dir include_dirs in
230-
let odoc_output_dir = Fpath.split_base odoc_file |> fst in
231-
{
232-
m = Mld mld;
233-
odoc_output_dir;
234-
odoc_file;
235-
odocl_file;
236-
include_dirs;
237-
impl = None;
238-
pkg_args;
239-
pkg_dir = mld.mld_pkg_dir;
240-
pkg_name = package_name;
241-
}
242-
:: acc)
243-
acc pkg.mlds)
244-
all mods in
227+
let result =
228+
Util.StringMap.fold
229+
(fun package_name (pkg : Packages.t) acc ->
230+
Logs.debug (fun m ->
231+
m "Package %s mlds: [%a]" pkg.name
232+
Fmt.(list ~sep:sp Packages.pp_mld)
233+
pkg.mlds);
234+
List.fold_left
235+
(fun acc (mld : Packages.mld) ->
236+
let odoc_file = Fpath.(output_dir // mld.Packages.mld_odoc_file) in
237+
let odocl_file =
238+
Fpath.(linked_dir // mld.Packages.mld_odocl_file)
239+
in
240+
let odoc_output_dir = Fpath.split_base odoc_file |> fst in
241+
Odoc.compile ~output_dir ~input_file:mld.mld_path
242+
~includes:Fpath.Set.empty ~parent_id:mld.mld_parent_id;
243+
Atomic.incr Stats.stats.compiled_mlds;
244+
let include_dirs =
245+
List.map (fun f -> Fpath.(output_dir // f)) mld.mld_deps
246+
|> Fpath.Set.of_list
247+
in
248+
let include_dirs = Fpath.Set.add odoc_output_dir include_dirs in
249+
let odoc_output_dir = Fpath.split_base odoc_file |> fst in
250+
{
251+
m = Mld mld;
252+
odoc_output_dir;
253+
odoc_file;
254+
odocl_file;
255+
include_dirs;
256+
impl = None;
257+
pkg_args;
258+
pkg_dir = mld.mld_pkg_dir;
259+
pkg_name = package_name;
260+
}
261+
:: acc)
262+
acc pkg.mlds)
263+
all mods
264+
in
245265

246266
(match partial with
247267
| Some l -> marshal (zipped, hashes) Fpath.(l / "index.m")
248268
| None -> ());
249269
result
250270

251-
type linked = {
252-
output_file : Fpath.t;
253-
src : Fpath.t option;
254-
pkg_dir : Fpath.t;
255-
}
271+
type linked = { output_file : Fpath.t; src : Fpath.t option; pkg_dir : Fpath.t }
256272

257273
let link : compiled list -> _ =
258274
fun compiled ->
259275
let link : compiled -> linked list =
260276
fun c ->
261277
let includes = Fpath.Set.add c.odoc_output_dir c.include_dirs in
262278
let link input_file output_file =
263-
let { pkg_args = { libs; docs }; pkg_name; _ } =
264-
c
265-
in
266-
Odoc.link ~input_file ~output_file ~includes ~libs ~docs ~current_package:pkg_name ()
279+
let { pkg_args = { libs; docs }; pkg_name; _ } = c in
280+
Odoc.link ~input_file ~output_file ~includes ~libs ~docs
281+
~current_package:pkg_name ()
267282
in
268283
let impl =
269284
match c.impl with
270285
| Some { impl_odoc; impl_odocl; src } ->
271-
Logs.debug (fun m -> m "Linking impl: %a -> %a" Fpath.pp impl_odoc Fpath.pp impl_odocl);
286+
Logs.debug (fun m ->
287+
m "Linking impl: %a -> %a" Fpath.pp impl_odoc Fpath.pp impl_odocl);
272288
link impl_odoc impl_odocl;
273289
Atomic.incr Stats.stats.linked_impls;
274-
[
275-
{
276-
pkg_dir = c.pkg_dir;
277-
output_file = impl_odocl;
278-
src = Some src;
279-
};
280-
]
290+
[ { pkg_dir = c.pkg_dir; output_file = impl_odocl; src = Some src } ]
281291
| None -> []
282292
in
283293
match c.m with
@@ -290,12 +300,7 @@ let link : compiled list -> _ =
290300
(match c.m with
291301
| Module _ -> Atomic.incr Stats.stats.linked_units
292302
| Mld _ -> Atomic.incr Stats.stats.linked_mlds);
293-
{
294-
output_file = c.odocl_file;
295-
src = None;
296-
pkg_dir = c.pkg_dir;
297-
}
298-
:: impl
303+
{ output_file = c.odocl_file; src = None; pkg_dir = c.pkg_dir } :: impl
299304
in
300305
Fiber.List.map link compiled |> List.concat
301306

@@ -304,8 +309,7 @@ let index_one ~odocl_dir pkgname pkg =
304309
let output_file = Fpath.(odocl_dir // dir / Odoc.index_filename) in
305310
let libs =
306311
List.map
307-
(fun lib ->
308-
(lib.Packages.lib_name, Fpath.(odocl_dir // lib.odoc_dir)))
312+
(fun lib -> (lib.Packages.lib_name, Fpath.(odocl_dir // lib.odoc_dir)))
309313
pkg.Packages.libraries
310314
in
311315
Odoc.compile_index ~json:false ~output_file ~libs
@@ -315,7 +319,9 @@ let index_one ~odocl_dir pkgname pkg =
315319
let index ~odocl_dir pkgs = Util.StringMap.iter (index_one ~odocl_dir) pkgs
316320

317321
let sherlodoc_index_one ~html_dir ~odocl_dir _ pkg_content =
318-
let inputs = [ Fpath.(odocl_dir // pkg_content.Packages.pkg_dir / Odoc.index_filename) ] in
322+
let inputs =
323+
[ Fpath.(odocl_dir // pkg_content.Packages.pkg_dir / Odoc.index_filename) ]
324+
in
319325
let dst = Fpath.(html_dir // Sherlodoc.db_js_file pkg_content.pkg_dir) in
320326
let dst_dir, _ = Fpath.split_base dst in
321327
Util.mkdir_p dst_dir;
@@ -331,20 +337,16 @@ let sherlodoc ~html_dir ~odocl_dir pkgs =
331337
Util.mkdir_p dst_dir;
332338
let inputs =
333339
pkgs |> Util.StringMap.bindings
334-
|> List.map (fun (_pkgname, pkg) -> Fpath.(odocl_dir // pkg.Packages.pkg_dir / Odoc.index_filename))
340+
|> List.map (fun (_pkgname, pkg) ->
341+
Fpath.(odocl_dir // pkg.Packages.pkg_dir / Odoc.index_filename))
335342
in
336343
Sherlodoc.index ~format ~inputs ~dst ()
337344

338345
let html_generate output_dir ~odocl_dir linked =
339346
let html_generate : linked -> unit =
340347
fun l ->
341-
let search_uris =
342-
[
343-
Sherlodoc.db_js_file l.pkg_dir;
344-
Sherlodoc.js_file;
345-
]
346-
in
347-
let index = Some (Fpath.(odocl_dir // l.pkg_dir / Odoc.index_filename)) in
348+
let search_uris = [ Sherlodoc.db_js_file l.pkg_dir; Sherlodoc.js_file ] in
349+
let index = Some Fpath.(odocl_dir // l.pkg_dir / Odoc.index_filename) in
348350
Odoc.html_generate ~search_uris ?index
349351
~output_dir:(Fpath.to_string output_dir)
350352
~input_file:l.output_file ?source:l.src ();

src/driver/compile.mli

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ type compiled
22

33
val init_stats : Packages.set -> unit
44

5-
val compile : Fpath.t option -> output_dir:Fpath.t -> ?linked_dir:Fpath.t -> Packages.set -> compiled list
5+
val compile :
6+
Fpath.t option ->
7+
output_dir:Fpath.t ->
8+
?linked_dir:Fpath.t ->
9+
Packages.set ->
10+
compiled list
611

712
type linked
813

src/driver/dune_style.ml

Lines changed: 63 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,68 @@
11
(* Dune build tree *)
22

33
let of_dune_build dir =
4-
let contents = Bos.OS.Dir.fold_contents ~dotfiles:true
5-
(fun p acc ->
6-
p::acc
7-
) [] Fpath.(v dir) in
4+
let contents =
5+
Bos.OS.Dir.fold_contents ~dotfiles:true
6+
(fun p acc -> p :: acc)
7+
[]
8+
Fpath.(v dir)
9+
in
810
match contents with
911
| Error _ -> Util.StringMap.empty
10-
| Ok c ->
11-
let sorted = List.sort (fun p1 p2 -> Fpath.compare p1 p2) c in
12-
let libs = List.filter_map (fun x ->
13-
match Fpath.segs x |> List.rev with
14-
| "byte" :: libname :: path ->
15-
let sz = String.length ".objs" in
16-
if Astring.String.is_suffix ~affix:".objs" libname && String.length libname > sz + 1 && libname.[0] = '.'
17-
then
18-
let libname = String.sub libname 1 (String.length libname - sz - 1) in
19-
Some (libname, Fpath.(v (String.concat dir_sep (List.rev path))))
20-
else None
21-
| _ -> None) sorted in
22-
let libs = List.map (fun (libname, path) ->
23-
let cmtidir = Fpath.(path / Printf.sprintf ".%s.objs" libname / "byte") in
24-
match Fpath.rem_prefix (Fpath.v dir) path with
25-
| Some pkg_dir ->
26-
(pkg_dir, Packages.Lib.v pkg_dir (Util.StringMap.singleton libname libname) libname path (Some cmtidir))
27-
| None -> failwith "Error") libs
28-
in
29-
let packages = List.filter_map (fun (pkg_dir, lib) ->
30-
match lib with
31-
| [lib] ->
32-
Some (lib.Packages.lib_name, {
33-
Packages.name = lib.Packages.lib_name;
34-
version="1.0";
35-
libraries=[lib];
36-
mlds = [];
37-
mld_odoc_dir = Fpath.v lib.Packages.lib_name;
38-
pkg_dir;
39-
other_docs = Fpath.Set.empty;
40-
})
41-
| _ -> None) libs in
42-
Util.StringMap.of_list packages
12+
| Ok c ->
13+
let sorted = List.sort (fun p1 p2 -> Fpath.compare p1 p2) c in
14+
let libs =
15+
List.filter_map
16+
(fun x ->
17+
match Fpath.segs x |> List.rev with
18+
| "byte" :: libname :: path ->
19+
let sz = String.length ".objs" in
20+
if
21+
Astring.String.is_suffix ~affix:".objs" libname
22+
&& String.length libname > sz + 1
23+
&& libname.[0] = '.'
24+
then
25+
let libname =
26+
String.sub libname 1 (String.length libname - sz - 1)
27+
in
28+
Some
29+
(libname, Fpath.(v (String.concat dir_sep (List.rev path))))
30+
else None
31+
| _ -> None)
32+
sorted
33+
in
34+
let libs =
35+
List.map
36+
(fun (libname, path) ->
37+
let cmtidir =
38+
Fpath.(path / Printf.sprintf ".%s.objs" libname / "byte")
39+
in
40+
match Fpath.rem_prefix (Fpath.v dir) path with
41+
| Some pkg_dir ->
42+
( pkg_dir,
43+
Packages.Lib.v pkg_dir
44+
(Util.StringMap.singleton libname libname)
45+
libname path (Some cmtidir) )
46+
| None -> failwith "Error")
47+
libs
48+
in
49+
let packages =
50+
List.filter_map
51+
(fun (pkg_dir, lib) ->
52+
match lib with
53+
| [ lib ] ->
54+
Some
55+
( lib.Packages.lib_name,
56+
{
57+
Packages.name = lib.Packages.lib_name;
58+
version = "1.0";
59+
libraries = [ lib ];
60+
mlds = [];
61+
mld_odoc_dir = Fpath.v lib.Packages.lib_name;
62+
pkg_dir;
63+
other_docs = Fpath.Set.empty;
64+
} )
65+
| _ -> None)
66+
libs
67+
in
68+
Util.StringMap.of_list packages

0 commit comments

Comments
 (0)