package opam-lib

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Typed filename manipulation

Basenames

Directory names

val cwd : unit -> Dir.t

Return the current working directory

val rmdir : Dir.t -> unit

Remove a directory

val cleandir : Dir.t -> unit

Clean the contents of a directory.

val mkdir : Dir.t -> unit

Create a directory

val rec_dirs : Dir.t -> Dir.t list

List the sub-directory recursively

val dir_is_empty : Dir.t -> bool
val dirs : Dir.t -> Dir.t list

List the sub-directory (do not recurse)

val in_dir : Dir.t -> (unit -> 'a) -> 'a

Evaluate a function in a given directory

val env_of_list : (string * string) list -> string array

Turns an assoc list into an array suitable to be provided as environment

val exec : Dir.t -> ?env:(string * string) list -> ?name:string -> ?metadata:(string * string) list -> ?keep_going:bool -> string list list -> unit

Execute a list of commands in a given directory

val move_dir : src:Dir.t -> dst:Dir.t -> unit

Move a directory

val copy_dir : src:Dir.t -> dst:Dir.t -> unit

Copy a directory

Link a directory

val exists_dir : Dir.t -> bool

Does the directory existsb ?

val dirname_dir : Dir.t -> Dir.t

Return the parent directory

val basename_dir : Dir.t -> Base.t

Return the deeper directory name

val to_list_dir : Dir.t -> Dir.t list

Turn a full path into a list of directory names

val raw_dir : string -> Dir.t

Creation from a raw string (as http://<path>)

val with_tmp_dir : (Dir.t -> 'a) -> 'a

Execute a function in a temp directory

val with_tmp_dir_job : (Dir.t -> 'a OpamProcess.job) -> 'a OpamProcess.job

Provide an automatically cleaned up temp directory to a job

include OpamStd.ABSTRACT
type t
val of_string : string -> t
val to_string : t -> string
val to_json : t -> OpamJson.t
module Set : OpamStd.SET with type elt = t
module Map : OpamStd.MAP with type key = t
type generic_file =
  1. | D of Dir.t
  2. | F of t

Generic filename

val create : Dir.t -> Base.t -> t

Create a filename from a Dir.t and a basename

val of_basename : Base.t -> t

Create a file from a basename and the current working directory as dirname

val raw : string -> t

Creation from a raw string (as http://<path>)

val prettify : t -> string

Prettify a filename:

  • replace /path/to/opam/foo by <opam>/foo
  • replace /path/to/home/foo by ~/foo
val prettify_dir : Dir.t -> string

Prettify a dirname.

val dirname : t -> Dir.t

Return the directory name

val basename : t -> Base.t

Return the base name

val read : t -> string

Retrieves the contents from the hard disk.

val open_in : t -> in_channel

Open a channel from a given file.

val open_out : t -> out_channel
val remove : t -> unit

Removes everything in filename if existed.

val write : t -> string -> unit

Removes everything in filename if existed, then write contents instead.

val exists : t -> bool

Returns true if the file exists and is a regular file or a symlink to one

val check_suffix : t -> string -> bool

Check whether a file has a given suffix

val add_extension : t -> string -> t

Add a file extension

val chop_extension : t -> t

Remove the file extension

val rec_files : Dir.t -> t list

List all the filenames, recursively

val files : Dir.t -> t list

List all the filename. Do not recurse.

val with_contents : (string -> 'a) -> t -> 'a

Apply a function on the contents of a file

val copy_in : ?root:Dir.t -> t -> Dir.t -> unit

Copy a file in a directory. If root is set, copy also the sub-directories. For instance, copy_in ~root:"/foo" "/foo/bar/gni" "/toto" creates "/toto/bar/gni".

val move : src:t -> dst:t -> unit

Move a file

Symlink a file in a directory

Read a symlinked file

Is a symlink ?

val is_exec : t -> bool

Is an executable ?

val copy : src:t -> dst:t -> unit

Copy a file

val install : ?exec:bool -> src:t -> dst:t -> unit -> unit

Installs a file to a destination. Optionnally set if the destination should be set executable

Symlink a file. If symlink is not possible on the system, use copy instead.

val extract : t -> Dir.t -> unit

Extract an archive in a given directory (it rewrites the root to match Dir.t dir if needed)

val extract_in : t -> Dir.t -> unit

Extract an archive in a given directory (which should already exists)

val extract_generic_file : generic_file -> Dir.t -> unit

Extract a generic file

val starts_with : Dir.t -> t -> bool

Check whether a filename starts by a given Dir.t

val ends_with : string -> t -> bool

Check whether a filename ends with a given suffix

val remove_prefix : Dir.t -> t -> string

Remove a prefix from a file name

val remove_suffix : Base.t -> t -> string

Remove a suffix from a filename

val patch : t -> Dir.t -> unit

Apply a patch to a directory

val digest : t -> string

Compute the MD5 digest of a file

val valid_digest : string -> bool

Check whether an MD5 digest is correctly formatted

val checksum : t -> string list

Compute the MD5 digest a file. Return the empty list if the file does not exist.

val checksum_dir : Dir.t -> string list

Compute the MD5 digest for all files in a directory.

val touch : t -> unit

Create an empty file

val chmod : t -> int -> unit

Change file permissions

val with_flock : ?read:bool -> t -> ('a -> 'b) -> 'a -> 'b

File locks

val copy_files : src:Dir.t -> dst:Dir.t -> unit

copy_if_check t src dst copies all the files from one directory to another. Do nothing if OPAMDONOTCOPYFILE is set to a non-empty value.

module Op : sig ... end
module Attribute : sig ... end

Simple structure to hanle file attributes

val to_attribute : Dir.t -> t -> Attribute.t

Convert a filename to an attribute, relatively to a root