Module B0_zero.Trash

Delete file hierarchies.

Deleting file hierarchies may be slow. This clears a given path by moving it to a trash directory which can be deleted at the end of the build asynchronously.

type t

The type for trashes.

val make : B0_std.Fpath.t -> t

make dir is a trash using directory dir for data storage. dir may not exist.

val dir : t -> B0_std.Fpath.t

dir t is the trash's directory (may not exist)

val trash : t -> B0_std.Fpath.t -> (unit, string) Stdlib.result

trash t p trashes path p in dir t. If p does not exist this has no effect. Note that p needs to be on the same device as dir t and that the latter is created if needed.

val delete : block:bool -> t -> (unit, string) Stdlib.result

delete ~block t deletes t's trash directory and its content. If block is true the operation is synchronous and blocks until the trash is effectively deleted; if false the operation is spawn as a separate process.

Note. On Windows block:false relies on cmd.exe being available.