package bos
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=77416442448462fb316b9b64ec213038153e82c6de030d511838a15bb13b80700598c1bcfae1c90ef766d4f42c9bf5dcf231eeff23709558246d7946962858cc
doc/bos/Bos/OS/Dir/index.html
Module OS.DirSource
Directory operations.
Existence, creation, deletion and contents
exists dir is true if dir is a directory in the file system and false otherwise. Symbolic links are followed.
must_exist dir is Ok dir if dir is a directory in the file system and an error otherwise. Symbolic links are followed.
create ~path ~mode dir creates, if needed, the directory dir with file permission mode (defaults 0o755 readable and traversable by everyone, writeable by the user). If path is true (default) intermediate directories are created with the same mode, otherwise missing intermediate directories lead to an error. The result is:
Ok trueifdirdid not exist and was created.Ok falseifdirdid exist as (possibly a symlink to) a directory. In this case the mode ofdirand any other directory is kept unchanged.Error _otherwise and in particular ifdirexists as a non-directory
delete ~must_exist ~recurse dir deletes the directory dir. If must_exist is true (defaults to false) an error is returned if dir doesn't exist. If recurse is true (default to false) no error occurs if the directory is non-empty: its contents is recursively deleted first.
contents ~dotfiles ~rel dir is the list of directories and files in dir. If rel is true (defaults to false) the resulting paths are relative to dir, otherwise they have dir prepended. See also fold_contents. If dotfiles is false (default) elements that start with a . are omitted.
val fold_contents :
?err:'b Path.fold_error ->
?dotfiles:bool ->
?elements:Path.elements ->
?traverse:Path.traverse ->
(Fpath.t -> 'a -> 'a) ->
'a ->
Fpath.t ->
('a, 'e) resultfold_contents err dotfiles elements traverse f acc d is:
contents d >>= Path.fold err dotfiles elements traverse f accFor more details see Folding over file system hierarchies.
Current working directory (cwd)
current () is the current working directory. The resulting path is guaranteed to be absolute.
set_current dir sets the current working directory to dir.
with_current dir f v is f v with the current working directory bound to dir. After the function returns the current working directory is back to its initial value.
Base directories
The directories returned by these functions are not guaranteed to exist.
expand_tilde p expands a tilde-prefixed path p according to the POSIX standard, for example expanding ~ to the result of user (). It returns p unchanged if p is not tilde-prefixed.
On Windows with MSVC++ or MinGW, ~ will still be expanded using the result of user () (which would be the value of USERPROFILE), but ~user is unsupported and will lead to an error.
user () is the home directory of the user executing the process. On Windows with MSVC++ or MinGW, USERPROFILE is consulted. On other operating systems and Windows with Cygwin, HOME is consulted first, and then the passwd database is looked up with the user ID of the process.
config () is the directory used to store user-specific program configurations. This is in order:
- If set the value of
XDG_CONFIG_HOME. - If set and on Windows® the value of
APPDATA. - If
user ()isOk home,Fpath.(home / ".config").
data () is the directory used to store user-specific program data. This is in order:
- If set the value of
XDG_DATA_HOME. - If set and on Windows® the value of
APPDATA. - If
user ()isOk home,Fpath.(home / ".local" / "share").
cache () is the directory used to store user-specific non-essential data. This is in order:
- If set the value of
XDG_CACHE_HOME. - If set and on Windows® the value of
%TEMP% - If
user ()isOk home,Fpath.(home / ".cache")
runtime () is the directory used to store user-specific runtime files. This is in order:
- If set the value of
XDG_RUNTIME_DIR. - The value of
default_tmp.
state () is the directory used to store user-specific state data files. This is in order:
- If set the value of
XDG_STATE_DIR. - If
user ()isOk home,Fpath.(home / ".local" / "state")
Temporary directories
type tmp_name_pat = (string -> string, Format.formatter, unit, string) format4The type for temporary directory name patterns. The string format is replaced by random characters.
val tmp : ?mode:int -> ?dir:Fpath.t -> tmp_name_pat -> (Fpath.t, 'e) resulttmp mode dir pat is a new empty directory in dir (defaults to Dir.default_tmp) named according to pat and created with permissions mode (defaults to 0o700 only readable and writable by the user). The directory path and its content is deleted at the end of program execution using a Stdlib.at_exit handler.
val with_tmp :
?mode:int ->
?dir:Fpath.t ->
tmp_name_pat ->
(Fpath.t -> 'a -> 'b) ->
'a ->
('b, 'e) resultwith_tmp mode dir pat f v is a new empty directory in dir (defaults to Dir.default_tmp) named according to pat and created with permissions mode (defaults to 0o700 only readable and writable by the user). Returns the value of f tmpdir v with tmpdir the directory path. After the function returns the directory path tmpdir and its content is deleted.
Default temporary directory
val default_tmp : unit -> Fpath.tdefault_tmp () is the directory used as a default value for creating temporary files and directories. If set_default_tmp hasn't been called this is:
- On POSIX, the value of the
TMPDIRenvironment variable orFpath.v "/tmp"if the variable is not set or empty. - On Windows, the value of the
TEMPenvironment variable orFpath.cur_dirif it is not set or empty
val set_default_tmp : Fpath.t -> unitset_default_tmp p sets the value returned by default_tmp to p.