67 lines
2.5 KiB
OCaml
67 lines
2.5 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* OCaml *)
|
|
(* *)
|
|
(* Jeremie Dimino, Jane Street Europe *)
|
|
(* *)
|
|
(* Copyright 2018 Jane Street Group LLC *)
|
|
(* *)
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
(* special exception on linking described in the file LICENSE. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
(** Management of include directories.
|
|
|
|
This module offers a high level interface to locating files in the
|
|
load path, which is constructed from [-I] command line flags and a few
|
|
other parameters.
|
|
|
|
It makes the assumption that the contents of include directories
|
|
doesn't change during the execution of the compiler.
|
|
*)
|
|
|
|
val add_dir : string -> unit
|
|
(** Add a directory to the load path *)
|
|
|
|
val remove_dir : string -> unit
|
|
(** Remove a directory from the load path *)
|
|
|
|
val reset : unit -> unit
|
|
(** Remove all directories *)
|
|
|
|
val init : string list -> unit
|
|
(** [init l] is the same as [reset (); List.iter add_dir (List.rev l)] *)
|
|
|
|
val get_paths : unit -> string list
|
|
(** Return the list of directories passed to [add_dir] so far. *)
|
|
|
|
val find : string -> string
|
|
(** Locate a file in the load path. Raise [Not_found] if the file
|
|
cannot be found. This function is optimized for the case where the
|
|
filename is a basename, i.e. doesn't contain a directory
|
|
separator. *)
|
|
|
|
val find_uncap : string -> string
|
|
(** Same as [find], but search also for uncapitalized name, i.e. if
|
|
name is Foo.ml, allow /path/Foo.ml and /path/foo.ml to match. *)
|
|
|
|
module Dir : sig
|
|
type t
|
|
(** Represent one directory in the load path. *)
|
|
|
|
val create : string -> t
|
|
|
|
val path : t -> string
|
|
|
|
val files : t -> string list
|
|
(** All the files in that directory. This doesn't include files in
|
|
sub-directories of this directory. *)
|
|
end
|
|
|
|
val add : Dir.t -> unit
|
|
|
|
val get : unit -> Dir.t list
|
|
(** Same as [get_paths ()], except that it returns a [Dir.t list]. *)
|