Module B00_cli.Op

B000.Op interaction.

Finding dependencies

val find_needs : ?⁠acc:B000.Op.Set.t -> recursive:bool -> writes:B000.Op.Set.t B00_std.Fpath.Map.t -> B000.Op.Set.t -> B000.Op.Set.t

find_needs ~recursive ~writes ~acc ops add to acc (defaults to B00.Op.Set.empty) the set of operations in the write index writes that need to be executed for the set of operations ops to be able to proceed. If recursive is false only direct dependencies are reported.

val find_enables : ?⁠acc:B000.Op.Set.t -> recursive:bool -> reads:B000.Op.Set.t B00_std.Fpath.Map.t -> B000.Op.Set.t -> B000.Op.Set.t

find_enables ~recursive ~writes ~acc ops add to acc (defaults to B00.Op.Set.empty) the set of operations in the read index reads that are enabled by the set of operations ops. If recursive is false only direct dependencies are reported.

Operation query

type query = B000.Op.t list -> B000.Op.t list

The type for build operation queries. This is not simply predicate because of dependency selection.

val select : reads:B00_std.Fpath.t list -> writes:B00_std.Fpath.t list -> ids:B000.Op.id list -> hashes:B00_std.Hash.t list -> marks:string list -> B000.Op.t -> bool

select ~reads ~writes ~ids ~hashes ~marks o is true iff o reads a file in reads or writes a file in writes or has its id in ids, or has its hash in hashes or has its mark in marks or if all these selector lists are empty.

val select_deps : needs:bool -> enables:bool -> recursive:bool -> dom:B000.Op.t list -> B000.Op.t list -> B000.Op.t list

select_deps ~needs ~enables ~recusrive ~dom ops select the operation needs and/or enables of ops recursively in dom. This is ops if both needs and enables are false.

val filter : revived:bool option -> statuses:[ `Aborted | `Done | `Failed | `Waiting ] list -> kinds:[ `Copy | `Delete | `Mkdir | `Notify | `Read | `Spawn | `Wait_files | `Write ] list -> B000.Op.t -> bool

filter ~revived ~statuses ~kinds is an operation filter for the given filters.

val order : by:[ `Create | `Dur | `Wait | `Start ] -> B000.Op.t list -> B000.Op.t list

order ~by ops orders ops by by time.

val query : select:(B000.Op.t -> bool) -> select_deps:(dom:B000.Op.t list -> B000.Op.t list -> B000.Op.t list) -> filter:(B000.Op.t -> bool) -> order:(B000.Op.t list -> B000.Op.t list) -> query

query ~select ~select_deps ~filer ~order is an operation query that selects operations, their dependencies (or not) according to select_deps, filters the result with filter and orders them by order.

Command line interface

val marks : ?⁠opts:string list -> ?⁠docs:string -> ?⁠doc:string -> ?⁠docv:string -> unit -> string list Cmdliner.Term.t
val select_cli : ?⁠docs:string -> ?⁠marks:string list Cmdliner.Term.t -> unit -> (B000.Op.t -> bool) Cmdliner.Term.t
val select_deps_cli : ?⁠docs:string -> unit -> (dom:B000.Op.t list -> B000.Op.t list -> B000.Op.t list) Cmdliner.Term.t
val filter_cli : ?⁠docs:string -> unit -> (B000.Op.t -> bool) Cmdliner.Term.t
val order_cli : ?⁠docs:string -> unit -> (B000.Op.t list -> B000.Op.t list) Cmdliner.Term.t
val query_cli : ?⁠docs:string -> unit -> query Cmdliner.Term.t
val query_man : Cmdliner.Manpage.block list