package opam-core

  1. Overview
  2. Docs

Module OpamFilenameSource

Higher level file and directory name manipulation AND file operations, wrappers on OpamSystem using the filename type

Sourcemodule Base : sig ... end

Basenames

Directory names

Sourceval cwd : unit -> Dir.t

Return the current working directory

Sourceval rmdir : Dir.t -> unit

Remove a directory

Sourceval cleandir : Dir.t -> unit

Cleans the contents of a directory, but keeps the directory in place.

Sourceval rmdir_cleanup : Dir.t -> unit

Removes an empty directory, as well as any empty leading path components

Sourceval mkdir : Dir.t -> unit

Create a directory

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

List the sub-directory recursively

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

List the sub-directory (do not recurse)

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

Evaluate a function in a given directory

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

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

Sourceval 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

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

Move a directory

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

Copy directory src to dst, that is, recursively copy the contents of src into dst, overwriting any existing files.

Link a directory

Sourceval exists_dir : Dir.t -> bool

Does the directory exist?

Sourceval opt_dir : Dir.t -> Dir.t option

Returns the argument as option, if the directory exists

Sourceval dirname_dir : Dir.t -> Dir.t

Return the parent directory

Sourceval basename_dir : Dir.t -> Base.t

Return the deeper directory name

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

Turn a full path into a list of directory names

Sourceval raw_dir : string -> Dir.t

Creation from a raw string, without resolving symlinks etc.

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

Execute a function in a temp directory

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

Provide an automatically cleaned up temp directory to a job

Sourceval concat_and_resolve : Dir.t -> string -> Dir.t

Create a new Dir.t and resolve symlinks

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

Generic filename

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

Create a filename from a Dir.t and a basename

Sourceval of_basename : Base.t -> t

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

Sourceval raw : string -> t

Creation from a raw string, without resolving symlinks, etc.

Sourceval prettify : t -> string

Prettify a filename:

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

Prettify a dirname.

Sourceval dirname : t -> Dir.t

Return the directory name

Sourceval basename : t -> Base.t

Return the base name

Sourceval read : t -> string

Retrieves the contents from the hard disk.

Sourceval open_in : t -> in_channel

Open a channel from a given file.

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

Removes everything in filename if existed.

Sourceval write : t -> string -> unit

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

Sourceval exists : t -> bool

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

Sourceval opt_file : t -> t option

Returns the argument as option if it exists and is either a regular file or a symlink to one

Sourceval check_suffix : t -> string -> bool

Check whether a file has a given suffix

Sourceval add_extension : t -> string -> t

Adds a dot and the given file extension

Sourceval chop_extension : t -> t

Remove the file extension

Sourceval rec_files : Dir.t -> t list

List all the filenames, recursively

Sourceval files : Dir.t -> t list

List all the filename. Do not recurse.

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

Apply a function on the contents of a file

Sourceval 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".

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

Move a file

Read a symlinked file

Is a symlink?

Sourceval is_exec : t -> bool

Is an executable?

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

Copy a file

Sourceval 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. With relative, creates a relative link through the closest common ancestor directory if possible. Otherwise, the symlink is absolute.

Sourceval is_archive : t -> bool

Returns true if the given file is an archive (zip or tar)

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

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

Sourceval extract_job : t -> Dir.t -> exn option OpamProcess.job

Same as extract, as an OpamProcess.job

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

Extract an archive in a given directory

Sourceval extract_in_job : t -> Dir.t -> exn option OpamProcess.job
Sourceval extract_generic_file : generic_file -> Dir.t -> unit

Extract a generic file

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

Check whether a filename starts by a given Dir.t

Sourceval ends_with : string -> t -> bool

Check whether a filename ends with a given suffix

Sourceval dir_starts_with : Dir.t -> Dir.t -> bool

dir starts_with pfx dir Check whether dir starts with pfx

Sourceval dir_ends_with : string -> Dir.t -> bool

Check whether a dirname ends with a given suffix

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

Remove a prefix from a file name

Sourceval remove_prefix_dir : Dir.t -> Dir.t -> string
Sourceval remove_suffix : Base.t -> t -> string

Remove a suffix from a filename

Sourceval patch : ?preprocess:bool -> t -> Dir.t -> exn option OpamProcess.job

Apply a patch in a directory. If preprocess is set to false, there is no CRLF translation. Returns None on success, the process error otherwise

Sourceval touch : t -> unit

Create an empty file

Sourceval chmod : t -> int -> unit

Change file permissions

Sourceval find_in_parents : (Dir.t -> bool) -> Dir.t -> Dir.t option

Returns the closest parent of a directory (including itself) for which the predicate holds, if any

Locking

Sourceval flock : [< OpamSystem.lock_flag ] -> ?dontblock:bool -> t -> OpamSystem.lock

See OpamSystem.flock. Prefer the higher level with_flock functions when possible

Sourceval with_flock : [< OpamSystem.lock_flag ] -> ?dontblock:bool -> t -> (Unix.file_descr -> 'a) -> 'a

Calls f while holding a lock file. Ensures the lock is properly released on f exit. Raises OpamSystem.Locked if dontblock is set and the lock can't be acquired. f is passed the file_descr of the lock.

Sourceval with_flock_upgrade : [< OpamSystem.actual_lock_flag ] -> ?dontblock:bool -> OpamSystem.lock -> (Unix.file_descr -> 'a) -> 'a

Calls f with the file lock upgraded to at least flag, then restores the previous lock level. Upgrade to `Lock_write should never be used in blocking mode as it would deadlock. Raises OpamSystem.Locked (but keeps the lock as is) if dontblock is set and the lock can't be upgraded.

Sourceval with_flock_write_then_read : ?dontblock:bool -> t -> (Unix.file_descr -> 'a) -> ('a -> 'b) -> 'b

Runs first function with a write lock on the given file, then releases it to a read lock and runs the second function.

Sourcemodule Op : sig ... end
Sourcemodule Attribute : sig ... end

Simple structure to hanle file attributes

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

Convert a filename to an attribute, relatively to a root

OCaml

Innovation. Community. Security.