@@ -16,9 +16,8 @@ let getSourceDirectories ~includeDev base config =
16
16
Json. get " dir" item |?> Json. string |? " Must specify directory"
17
17
in
18
18
let typ =
19
- match includeDev with
20
- | true -> " lib"
21
- | false -> item |> Json. get " type" |?> Json. string |? " lib"
19
+ if includeDev then " lib"
20
+ else item |> Json. get " type" |?> Json. string |? " lib"
22
21
in
23
22
if typ = " dev" then []
24
23
else
@@ -29,10 +28,12 @@ let getSourceDirectories ~includeDev base config =
29
28
(* |> ifDebug(true, "Subdirs", String.concat(" - ")) *)
30
29
|> List. filter (fun name -> name <> Filename. current_dir_name)
31
30
|> List. map (Files. relpath base)
32
- | Some item -> (current /+ dir) :: handleItem (current /+ dir) item )
31
+ | Some item -> (current /+ dir) :: handleItem (current /+ dir) item)
33
32
| _ -> failwith " Invalid subdirs entry"
34
33
in
35
- config |> Json. get " sources" |?>> handleItem " " |? []
34
+ match config |> Json. get " sources" with
35
+ | None -> []
36
+ | Some item -> handleItem " " item
36
37
37
38
let isCompiledFile name =
38
39
Filename. check_suffix name " .cmt" || Filename. check_suffix name " .cmti"
@@ -73,10 +74,10 @@ let filterDuplicates cmts =
73
74
cmts
74
75
|> List. filter (fun path ->
75
76
not
76
- ( ( Filename. check_suffix path " .re"
77
- || Filename. check_suffix path " .ml"
78
- || Filename. check_suffix path " .cmt" )
79
- && Hashtbl. mem intfs (getName path) ))
77
+ (( Filename. check_suffix path " .re"
78
+ || Filename. check_suffix path " .ml"
79
+ || Filename. check_suffix path " .cmt" )
80
+ && Hashtbl. mem intfs (getName path)))
80
81
81
82
let nameSpaceToName n =
82
83
n
@@ -89,13 +90,12 @@ let getNamespace config =
89
90
let isNamespaced =
90
91
ns |?> Json. bool |? (ns |?> Json. string |?> (fun _ -> Some true ) |? false )
91
92
in
92
- match isNamespaced with
93
- | true ->
93
+ if isNamespaced then
94
94
ns |?> Json. string
95
95
|?? (Json. get " name" config |?> Json. string )
96
96
|! " name is required if namespace is true" |> nameSpaceToName
97
97
|> fun s -> Some s
98
- | false -> None
98
+ else None
99
99
100
100
let collectFiles directory =
101
101
let allFiles = Files. readDirectory directory in
@@ -108,9 +108,7 @@ let collectFiles directory =
108
108
let source =
109
109
Utils. find
110
110
(fun name ->
111
- match getName name = modName with
112
- | true -> Some (directory /+ name)
113
- | false -> None )
111
+ if getName name = modName then Some (directory /+ name) else None )
114
112
sources
115
113
in
116
114
(modName, SharedTypes. Impl (compiled, source)))
@@ -148,45 +146,44 @@ let findProjectFiles ~debug namespace root sourceDirectories compiledBase =
148
146
|| Filename. check_suffix path " .mli"
149
147
then (
150
148
Log. log (" Adding intf " ^ path);
151
- Hashtbl. replace interfaces (getName path) path ));
149
+ Hashtbl. replace interfaces (getName path) path));
152
150
let normals =
153
151
files
154
152
|> Utils. filterMap (fun path ->
155
- if
156
- Filename. check_suffix path " .re"
157
- || Filename. check_suffix path " .res"
158
- || Filename. check_suffix path " .ml"
159
- then (
160
- let mname = getName path in
161
- let intf = Hashtbl. find_opt interfaces mname in
162
- Hashtbl. remove interfaces mname;
163
- let base = compiledBaseName ~namespace (Files. relpath root path) in
164
- match intf with
165
- | Some intf ->
166
- let cmti = (compiledBase /+ base) ^ " .cmti" in
167
- let cmt = (compiledBase /+ base) ^ " .cmt" in
168
- if Files. exists cmti then
169
- if Files. exists cmt then
170
- (* Log.log("Intf and impl " ++ cmti ++ " " ++ cmt) *)
171
- Some (mname, SharedTypes. IntfAndImpl (cmti, intf, cmt, path))
172
- else Some (mname, Intf (cmti, intf))
173
- else (
174
- (* Log.log("Just intf " ++ cmti) *)
175
- Log. log (" Bad source file (no cmt/cmti/cmi) " ^ (compiledBase /+ base));
176
- None
177
- )
178
- | None ->
179
- let cmt = (compiledBase /+ base) ^ " .cmt" in
180
- if Files. exists cmt then Some (mname, Impl (cmt, Some path))
181
- else (
182
- Log. log (" Bad source file (no cmt/cmi) " ^ (compiledBase /+ base));
183
- None
184
- )
185
- ) else (
186
- Log. log (" Bad source file (extension) " ^ path);
187
- None
188
- )
189
- )
153
+ if
154
+ Filename. check_suffix path " .re"
155
+ || Filename. check_suffix path " .res"
156
+ || Filename. check_suffix path " .ml"
157
+ then (
158
+ let mname = getName path in
159
+ let intf = Hashtbl. find_opt interfaces mname in
160
+ Hashtbl. remove interfaces mname;
161
+ let base = compiledBaseName ~namespace (Files. relpath root path) in
162
+ match intf with
163
+ | Some intf ->
164
+ let cmti = (compiledBase /+ base) ^ " .cmti" in
165
+ let cmt = (compiledBase /+ base) ^ " .cmt" in
166
+ if Files. exists cmti then
167
+ if Files. exists cmt then
168
+ (* Log.log("Intf and impl " ++ cmti ++ " " ++ cmt) *)
169
+ Some (mname, SharedTypes. IntfAndImpl (cmti, intf, cmt, path))
170
+ else Some (mname, Intf (cmti, intf))
171
+ else (
172
+ (* Log.log("Just intf " ++ cmti) *)
173
+ Log. log
174
+ (" Bad source file (no cmt/cmti/cmi) " ^ (compiledBase /+ base)
175
+ );
176
+ None )
177
+ | None ->
178
+ let cmt = (compiledBase /+ base) ^ " .cmt" in
179
+ if Files. exists cmt then Some (mname, Impl (cmt, Some path))
180
+ else (
181
+ Log. log
182
+ (" Bad source file (no cmt/cmi) " ^ (compiledBase /+ base));
183
+ None ))
184
+ else (
185
+ Log. log (" Bad source file (extension) " ^ path);
186
+ None ))
190
187
in
191
188
let result =
192
189
List. append normals
@@ -200,9 +197,9 @@ let findProjectFiles ~debug namespace root sourceDirectories compiledBase =
200
197
else res)
201
198
interfaces [] )
202
199
|> List. map (fun (name , paths ) ->
203
- match namespace with
204
- | None -> (name, paths)
205
- | Some namespace -> (name ^ " -" ^ namespace, paths))
200
+ match namespace with
201
+ | None -> (name, paths)
202
+ | Some namespace -> (name ^ " -" ^ namespace, paths))
206
203
in
207
204
match namespace with
208
205
| None -> result
@@ -234,35 +231,35 @@ let findDependencyFiles ~debug base config =
234
231
let depFiles =
235
232
deps
236
233
|> List. map (fun name ->
237
- let result =
238
- ModuleResolution. resolveNodeModulePath ~start Path:base name
239
- |?> fun loc ->
240
- let innerPath = loc /+ " bsconfig.json" in
241
- Log. log (" Dep loc " ^ innerPath);
242
- match Files. readFile innerPath with
243
- | Some text -> (
244
- let inner = Json. parse text in
245
- let namespace = getNamespace inner in
246
- let directories =
247
- getSourceDirectories ~include Dev:false loc inner
248
- in
249
- match BuildSystem. getCompiledBase loc with
250
- | None -> None
251
- | Some compiledBase ->
252
- if debug then Log. log (" Compiled base: " ^ compiledBase);
253
- let compiledDirectories =
254
- directories |> List. map (Files. fileConcat compiledBase)
255
- in
256
- let compiledDirectories =
257
- match namespace = None with
258
- | true -> compiledDirectories
259
- | false -> compiledBase :: compiledDirectories
260
- in
261
- let files =
262
- findProjectFiles ~debug namespace loc directories
263
- compiledBase
264
- in
265
- (*
234
+ let result =
235
+ ModuleResolution. resolveNodeModulePath ~start Path:base name
236
+ |?> fun loc ->
237
+ let innerPath = loc /+ " bsconfig.json" in
238
+ Log. log (" Dep loc " ^ innerPath);
239
+ match Files. readFile innerPath with
240
+ | Some text -> (
241
+ let inner = Json. parse text in
242
+ let namespace = getNamespace inner in
243
+ let directories =
244
+ getSourceDirectories ~include Dev:false loc inner
245
+ in
246
+ match BuildSystem. getCompiledBase loc with
247
+ | None -> None
248
+ | Some compiledBase ->
249
+ if debug then Log. log (" Compiled base: " ^ compiledBase);
250
+ let compiledDirectories =
251
+ directories |> List. map (Files. fileConcat compiledBase)
252
+ in
253
+ let compiledDirectories =
254
+ match namespace with
255
+ | None -> compiledDirectories
256
+ | Some _ -> compiledBase :: compiledDirectories
257
+ in
258
+ let files =
259
+ findProjectFiles ~debug namespace loc directories
260
+ compiledBase
261
+ in
262
+ (*
266
263
let files = switch (namespace) {
267
264
| None =>
268
265
files
@@ -273,15 +270,14 @@ let findDependencyFiles ~debug base config =
273
270
)
274
271
};
275
272
*)
276
- Some (compiledDirectories, files) )
277
- | None -> None
278
- in
279
- match result with
280
- | Some dependency -> dependency
281
- | None ->
282
- Log. log (" Skipping nonexistent dependency: " ^ name);
283
- ([] , [] )
284
- )
273
+ Some (compiledDirectories, files))
274
+ | None -> None
275
+ in
276
+ match result with
277
+ | Some dependency -> dependency
278
+ | None ->
279
+ Log. log (" Skipping nonexistent dependency: " ^ name);
280
+ ([] , [] ))
285
281
in
286
282
let directories, files = List. split depFiles in
287
283
let files = List. concat files in
0 commit comments