B0caml_ocamlpath
OCAMLPATH
support move to B0_care.
classify_path p
is:
`Logical l
if p
starts with a '+'
. l
is p
without the '+'
or Fpath.v "."
if that results in the empty string.`Concrete d
otherwise.Logical paths are those that need to be looked up in OCAMLPATH
.
logical_path_root_name d
is:
Some r
if classify_path d
is `Logical d'
and r
the first non-dot segment of d'
.None
otherwise.The type for OCAMLPATH. Conceptually it's just a list of directories but for legacy reasons we need to carry a bit more information.
val get :
?search:B0_std.Fpath.t list ->
B0_std.Fpath.t list option ->
(t, string) Stdlib.result
get ocamlpath
is Ok ps
if ocamlpath
is Some ps
and otherwise:
OCAMLPATH
environment variable is defined, its contents parsed according to Fpath
.list_of_search_path.opam
tool is available [$(opam var lib); $(ocamlc -where)]
or [$(opam var lib)]
if $(ocamlc -where)
is included in it.opam
tool is not available $(ocamlc -where)
search
is given to Os
.Cmd.find to lookup ocamlc
and opam
.
val dirs : t -> B0_std.Fpath.t list
dirs
are the directories in the OCAMLPATH.
val ocaml_logical_dir : t -> B0_std.Fpath.t
ocaml_logical
is the path to the directory that should be called "+ocaml"
in the OCAMLPATH. For systems installs where packages are installed in ocamlc -where
(OCAMLPATH is undefined), ocamlc
-where
is in dirs
but "+ocaml"
cannot be resolved by looking up dirs
. This is the resolution that should be used for "+ocaml"
.
val logical_dirs : t -> (B0_std.Fpath.Set.t, string) Stdlib.result
logical_dirs
is the domain of logical directories in ocamlpath
on the current file system. That is the set of directories DIR
that can be specified as +DIR
. The set has them without the +
.
val logical_dir_suggestions :
logical_dirs:B0_std.Fpath.Set.t ->
B0_std.Fpath.t ->
B0_std.Fpath.t list option
dir_suggestions ~dirs dir
are suggestions to correct an unfound logical directory dir
in logical_dirs
for example obtained via logical_dirs
.