Module OpamFilenameSource
Higher level file and directory name manipulation AND file operations, wrappers on OpamSystem using the filename type
Directory names
Return the current working directory
Remove a directory
Cleans the contents of a directory, but keeps the directory in place. Noop if directory doesn't exists.
Removes an empty directory, as well as any empty leading path components. Must be called only on a directory that is known to not have empty parents, only internal opam directory (and not tmp dir).
Create a directory
List the sub-directory recursively
Returns whether a directory is empty. Returns None if the directory could not be found.
List the sub-directory (do not recurse)
Evaluate a function in a given directory
Turns an assoc list into an array suitable to be provided as environment
val exec :
OpamFilename.Dir.t ->
?env:(string * string) list ->
?name:string ->
?metadata:(string * string) list ->
?keep_going:bool ->
string list list ->
unitExecute a list of commands in a given directory
Move a directory
Copy directory src to dst, that is, recursively copy the contents of src into dst, overwriting any existing files.
Same as copy_dir except it avoids copying VCS directories (.git, .hg, _darcs)
Link a directory
Does the directory exist?
Returns the argument as option, if the directory exists
Return the parent directory
Return the deeper directory name
Turn a full path into a list of directory names
Creation from a raw string, without resolving symlinks etc.
Execute a function in a temp directory
Provide an automatically cleaned up temp directory to a job
Raw function to create a temporary directory. No automatic cleanup
Create a new Dir.t and resolve symlinks
Generic filename
Create a filename from a Dir.t and a basename
Create a file from a basename and the current working directory as dirname
Creation from a raw string, without resolving symlinks, etc.
Prettify a filename:
- replace /path/to/opam/foo by <opam>/foo
- replace /path/to/home/foo by ~/foo
Prettify a dirname.
Return the directory name
Return the base name
Retrieves the contents from the hard disk.
Open a channel from a given file.
with_open_out_bin filename f opens f and passes the out_channel to f. If f raises an exception, then filename is deleted and then exception is propagated. The out_channel does not have to be closed by f.
with_open_out_bin_atomic filename f opens f and passes the out_channel to f. If f raises an exception, then filename will be unaltered and then exception is propagated. The out_channel does not have to be closed by f.
Removes everything in filename if existed.
Removes everything in filename if existed, then write contents instead.
Returns true if the file exists and is a regular file or a symlink to one
Returns the argument as option if it exists and is either a regular file or a symlink to one
Execute a function with a file in a temp directory. It is always cleaned up afterwards.
Provide an automatically cleaned up file in temp directory to a job
Check whether a file has a given suffix
Adds a dot and the given file extension
Remove the file extension
List all the filenames, recursively
List all the filename. Do not recurse.
Returns alll the files, including dangling symlinks (which means that not all entries will satisfy exists).
Apply a function on the contents of a file
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".
Move a file
Read a symlinked file
Is a symlink?
Is an executable?
Copy a file
val install :
?warning:OpamSystem.install_warning_fn ->
?exec:bool ->
src:OpamFilename.t ->
dst:OpamFilename.t ->
unit ->
unitInstalls a file to a destination. Optionally 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.
Returns true if the given file is an archive (zip or tar)
Extract an archive in a given directory (it rewrites the root to match Dir.t dir if needed)
Same as extract, as an OpamProcess.job
Extract an archive in a given directory
Extract a generic file
Check whether a filename starts by a given Dir.t
Check whether a filename ends with a given suffix
dir starts_with pfx dir Check whether dir starts with pfx
Check whether a dirname ends with a given suffix
Remove a prefix from a file name
Remove a suffix from a filename
val patch :
allow_unclean:bool ->
[ `Patch_file of OpamFilename.t | `Patch_diffs of Patch.t list ] ->
OpamFilename.Dir.t ->
(Patch.operation list, exn) Stdlib.resultpatch ~allow_unclean patch_source dir applies a patch to directory dir. The patch source can be either `Patch_file filename for a patch file, or `Patch_diffs diffs for a list of file-level changes.
parse_patch ~dir patch_file processes and parses a patch file. Returns the parsed patch diffs or raises an exception if the patch file doesn't exist or can't be parsed.
Create an empty file
Change file permissions
Returns delay since last file update, based on mtime
val find_in_parents :
(OpamFilename.Dir.t -> bool) ->
OpamFilename.Dir.t ->
OpamFilename.Dir.t optionReturns the closest parent of a directory (including itself) for which the predicate holds, if any
Locking
See OpamSystem.flock. Prefer the higher level with_flock functions when possible
val with_flock :
[< OpamSystem.lock_flag ] ->
?dontblock:bool ->
OpamFilename.t ->
(Unix.file_descr -> 'a) ->
'aCalls f while holding a lock file. Ensures the lock is properly released on f exit. f is passed the file_descr of the lock.
val with_flock_upgrade :
[< OpamSystem.actual_lock_flag ] ->
?dontblock:bool ->
OpamSystem.lock ->
(Unix.file_descr -> 'a) ->
'aCalls 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.
val with_flock_write_then_read :
?dontblock:bool ->
OpamFilename.t ->
(Unix.file_descr -> 'a) ->
('a -> 'b) ->
'bRuns first function with a write lock on the given file, then releases it to a read lock and runs the second function.
Convert a filename to an attribute, relatively to a root