Source selection
The type for file paths. Must be convertible with B00_std.Fpath.of_string
. We do not use B00_std.Fpath
directly to allow for a lighter syntax in B0 files.
Important. Use only "/"
as the directory separator even on Windows® platforms. Don't be upset the UI gives them back to you using the local platform separator.
val fpath : B00_std.Fpath.t -> fpath
fpath
is B00_std.Fpath.to_string
. If you prefer to specify your paths the clean way. TODO remove ?
type sel = [
| `D of fpath |
| `D_rec of fpath |
| `X of fpath |
| `F of fpath |
| `Fiber of B0_build.t -> B00_std.Fpath.Set.t B00.Memo.fiber |
]
The type for file selectors.
`F f
unconditionaly selects the filef
.f
must exist and be a file.`D d
selects the files of directoryd
modulo`X
exclusions.d
must exist and be a directory. dotfile paths are ignored.`D_rec d
selects the files of the file hierarchy rooted atd
modulo`X
exclusions.d
must exist and be a directory. dotfile paths are ignored.`X x
removes from directory selections any file whose path segments are prefixed byx
, respecting segment boundaries. A potential trailing directory separators inx
is removed.`Fiber f
uses the given fiber during the build to determine a set of files unconditionally added to the selection.
type t = sel list
The type for source selection.
val select : B0_build.t -> t -> B00_fexts.map B00.Memo.fiber
select b sels
selects in b
the sources specified by sels
and returns them mapped by their file extension (not multiple file extension). Each file is guaranteed to appear only once in the map.
Any relative path of srcs
is made absolute to the current build unit with B0_build.Unit.root_dir
.
Important. All files in the map that were selected via `F
, `D
and `D_rec
are automatically made ready in the build. For those selected via `Fiber
readyness determination is left to the fiber and the mechanisms it invokes.