@@ -105,6 +105,18 @@ let getNamespace config =
105105 either fromString fromName |> Option. map nameSpaceToName
106106 else None
107107
108+ module StringSet = Set. Make (String )
109+
110+ let getPublic config =
111+ let public = config |> Json. get " public" in
112+ match public with
113+ | None -> None
114+ | Some public -> (
115+ match public |> Json. array with
116+ | None -> None
117+ | Some public ->
118+ Some (public |> List. filter_map Json. string |> StringSet. of_list))
119+
108120let collectFiles directory =
109121 let allFiles = Files. readDirectory directory in
110122 let compileds = allFiles |> List. filter isCompiledFile |> filterDuplicates in
@@ -124,8 +136,7 @@ let collectFiles directory =
124136 | Some res -> Some (modName, SharedTypes. Impl {cmt; res}))
125137
126138(* returns a list of (absolute path to cmt(i), relative path from base to source file) *)
127- let findProjectFiles ~namespace ~path ~sourceDirectories ~libBs =
128- let module StringSet = Set. Make (String ) in
139+ let findProjectFiles ~public ~namespace ~path ~sourceDirectories ~libBs =
129140 let dirs =
130141 sourceDirectories |> List. map (Filename. concat path) |> StringSet. of_list
131142 in
@@ -179,10 +190,18 @@ let findProjectFiles ~namespace ~path ~sourceDirectories ~libBs =
179190 in
180191 let result =
181192 normals
182- |> List. map (fun (name , paths ) ->
183- match namespace with
184- | None -> (name, paths)
185- | Some namespace -> (name ^ " -" ^ namespace, paths))
193+ |> List. filter_map (fun (name , paths ) ->
194+ let originalName = name in
195+ let name =
196+ match namespace with
197+ | None -> name
198+ | Some namespace -> name ^ " -" ^ namespace
199+ in
200+ match public with
201+ | Some public ->
202+ if public |> StringSet. mem originalName then Some (name, paths)
203+ else None
204+ | None -> Some (name, paths))
186205 in
187206 match namespace with
188207 | None -> result
@@ -236,8 +255,8 @@ let findDependencyFiles base config =
236255 | Some _ -> libBs :: compiledDirectories
237256 in
238257 let projectFiles =
239- findProjectFiles ~namespace ~path ~source Directories
240- ~lib Bs
258+ findProjectFiles ~public: (getPublic inner) ~namespace
259+ ~path ~source Directories ~ lib Bs
241260 in
242261 Some (compiledDirectories, projectFiles))
243262 | None -> None )
0 commit comments