Module Conex_io
IO operations
Conex relies on providers to read data from and write data to. Each access consists of a path
used as key. Only basic file types are supported (no symbolic links).
IO provider
type t
=
{
basedir : string;
description : string;
file_type : Conex_utils.path -> (Conex_utils.file_type, string) Stdlib.result;
read : Conex_utils.path -> (string, string) Stdlib.result;
write : Conex_utils.path -> string -> (unit, string) Stdlib.result;
read_dir : Conex_utils.path -> (Conex_utils.item list, string) Stdlib.result;
exists : Conex_utils.path -> bool;
}
A provider contains its base directory, a description, and read/write/exist functionality. TODO: define this as a module type.
val pp : t Conex_utils.fmt
pp t
is a pretty printer fort
.
Reading of resource files
type r_err
=[
|
`NotFound of Conex_resource.typ * Conex_resource.name
|
`ParseError of Conex_resource.typ * Conex_resource.name * string
|
`NameMismatch of Conex_resource.typ * Conex_resource.name * Conex_resource.name
|
`InvalidPath of Conex_resource.name * Conex_utils.path
]
The variant of read and parse errors.
val pp_r_err : r_err Conex_utils.fmt
pp_r_err
is a pretty printer forr_err
.
val read_root : t -> Conex_resource.name -> (Conex_resource.Root.t * string list, [> r_err ]) Stdlib.result
val write_root : t -> Conex_resource.Root.t -> (unit, string) Stdlib.result
val targets : t -> Conex_resource.Root.t -> Conex_resource.identifier list
val read_targets : t -> Conex_resource.Root.t -> bool -> Conex_resource.identifier -> (Conex_resource.Targets.t * string list, [> r_err ]) Stdlib.result
val write_targets : t -> Conex_resource.Root.t -> Conex_resource.Targets.t -> (unit, string) Stdlib.result
val compute_checksum : ?prefix:Conex_utils.path -> t -> bool -> (string -> Conex_resource.Digest.t) -> Conex_utils.path -> (Conex_resource.Target.t list, string) Stdlib.result
val compute_checksum_tree : ?prefix:Conex_utils.path -> t -> (string -> Conex_resource.Digest.t) -> ((Conex_resource.Digest.t * Conex_utils.Uint.t) Conex_utils.Tree.t, string) Stdlib.result