package dune

  1. Overview
  2. Docs
module Relative : sig ... end

Relative path with unspecified root

module Local : sig ... end

In the current workspace (anything under the current project root)

module Source : sig ... end

In the source section of the current workspace.

module External : sig ... end
module Kind : sig ... end
module Build : sig ... end

In the outside world

type t
val to_string : t -> string
val of_string : string -> t
val parse_string_exn : loc:Stdune__.Loc0.t -> string -> t
val pp : Format.formatter -> t -> unit

a directory is smaller than its descendants

include Comparable.S with type t := t
val compare : t -> t -> Ordering.t
include Comparable.OPS with type t := t
val equal : t -> t -> bool
val (=) : t -> t -> bool
val (>=) : t -> t -> bool
val (>) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
val (<>) : t -> t -> bool
val to_dyn : t -> Dyn.t
val to_sexp : t -> Sexp.t
val extension : t -> string
val set_extension : t -> ext:string -> t

set_extension path ~ext replaces extension of path by ext

val split_extension : t -> t * string
val basename : t -> string
val is_suffix : t -> suffix:string -> bool
module Set : sig ... end
module Map : Map.S with type key = t
module Table : Hashtbl.S with type key = t
val parent_exn : t -> t
val parent : t -> t option
val hash : t -> int
val to_string_maybe_quoted : t -> string

to_string_maybe_quoted t is maybe_quoted (to_string t)

val kind : t -> Kind.t
val root : t
val is_root : t -> bool
val is_managed : t -> bool
val relative : ?error_loc:Stdune__.Loc0.t -> t -> string -> t
val of_filename_relative_to_initial_cwd : string -> t

Create an external path. If the argument is relative, assume it is relative to the initial directory dune was launched in.

val to_absolute_filename : t -> string

Convert a path to an absolute filename. Must be called after the workspace root has been set. root is the root directory of local paths

val reach : t -> from:t -> string
val reach_for_running : ?from:t -> t -> string

from defaults to Path.root

val descendant : t -> of_:t -> t option
val is_descendant : t -> of_:t -> bool
val append : t -> t -> t
val append_relative : t -> Relative.t -> t
val append_local : t -> Local.t -> t
val append_source : t -> Source.t -> t
val extend_basename : t -> suffix:string -> t
val extract_build_context : t -> (string * Source.t) option

Extract the build context from a path. For instance, representing paths as strings:

extract_build_context "_build/blah/foo/bar" = Some ("blah", "foo/bar")

It doesn't work correctly (doesn't return a sensible source path) for build directories that are not build contexts, e.g. "_build/install" and "_build/.aliases".

val extract_build_context_exn : t -> string * Source.t
val extract_build_dir_first_component : t -> (string * Relative.t) option
val extract_build_context_dir : t -> (t * Source.t) option

Same as extract_build_context but return the build context as a path:

extract_build_context "_build/blah/foo/bar" = Some ("_build/blah", "foo/bar")
val extract_build_context_dir_exn : t -> t * Source.t
val drop_build_context : t -> Source.t option

Drop the "_build/blah" prefix

val drop_build_context_exn : t -> Source.t
val drop_optional_build_context : t -> t

Drop the "_build/blah" prefix if present, return t otherwise

val drop_optional_build_context_src_exn : t -> Source.t

Drop the "_build/blah" prefix if present, return t if it's a source file, otherwise fail.

val sandbox_managed_paths : sandbox_dir:Build.t -> t -> t

Transform managed paths so that they are descedant of sandbox_dir.

val explode : t -> string list option
val explode_exn : t -> string list
val build_dir : t

The build directory

val is_in_build_dir : t -> bool

is_in_build_dir t = is_descendant t ~of:build_dir

val is_in_source_tree : t -> bool

is_in_build_dir t = is_managed t && not (is_in_build_dir t)

val as_in_source_tree : t -> Source.t option
val as_in_build_dir : t -> Build.t option
val as_in_build_dir_exn : t -> Build.t
val is_strict_descendant_of_build_dir : t -> bool

is_strict_descendant_of_build_dir t = is_in_build_dir t && t <> build_dir

val split_first_component : t -> (string * t) option

Split after the first component if t is local

val insert_after_build_dir_exn : t -> string -> t
val exists : t -> bool
val readdir_unsorted : t -> (string list, Unix.error) Result.t
val is_directory : t -> bool
val is_file : t -> bool
val rmdir : t -> unit
val rm_rf : t -> unit
val mkdir_p : t -> unit
val pp_in_source : Format.formatter -> t -> unit
val pp_debug : Format.formatter -> t -> unit
val build_dir_exists : unit -> bool
val ensure_build_dir_exists : unit -> unit
val source : Source.t -> t
val build : Build.t -> t
val in_source : string -> t

paths guaranteed to be in the source directory

val of_local : Local.t -> t
val set_root : External.t -> unit

Set the workspace root. Can only be called once and the path must be absolute

module Internal : sig ... end

Internal use only

module L : sig ... end
val local_part : t -> Relative.t

Return the "local part" of a path. For local paths (in build directory or source tree), this returns the path itself. For external paths, it returns a path that is relative to the current directory. For example, the local part of /a/b is ./a/b.

val stat : t -> Unix.stats
val set_of_source_paths : Source.Set.t -> Set.t
val set_of_build_paths_list : Build.t list -> Set.t
OCaml

Innovation. Community. Security.