B0_cli.Op
B0_zero.Op
interaction.
val find_needs :
?acc:B0_zero.Op.Set.t ->
recursive:bool ->
writes:B0_zero.Op.Set.t B0_std.Fpath.Map.t ->
B0_zero.Op.Set.t ->
B0_zero.Op.Set.t
find_needs ~recursive ~writes ~acc ops
add to acc
(defaults to B0_zero.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:B0_zero.Op.Set.t ->
recursive:bool ->
reads:B0_zero.Op.Set.t B0_std.Fpath.Map.t ->
B0_zero.Op.Set.t ->
B0_zero.Op.Set.t
find_enables ~recursive ~writes ~acc ops
add to acc
(defaults to B0_zero.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.
type query = B0_zero.Op.t list -> B0_zero.Op.t list
The type for build operation queries. This is not simply predicate because of dependency selection.
val select :
reads:B0_std.Fpath.t list ->
writes:B0_std.Fpath.t list ->
ids:B0_zero.Op.id list ->
hashes:B0_std.Hash.t list ->
marks:string list ->
B0_zero.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:B0_zero.Op.t list ->
B0_zero.Op.t list ->
B0_zero.Op.t list
select_deps ~needs ~enables ~recusrive ~dom ops
select the operation needs
and/or enables
of ops
recursive
ly in dom
. This is ops
if both needs
and enables
are false
.
val filter :
revived:[ `Executed | `Revived | `Unrevived ] option ->
statuses:[ `Aborted | `Success | `Failed | `Waiting ] list ->
kinds:
[ `Copy
| `Delete
| `Mkdir
| `Notify
| `Read
| `Spawn
| `Wait_files
| `Write ]
list ->
B0_zero.Op.t ->
bool
filter ~revived ~statuses ~kinds
is an operation filter for the given filters.
val order :
by:[ `Create | `Dur | `Wait | `Start ] ->
B0_zero.Op.t list ->
B0_zero.Op.t list
order ~by ops
orders ops
by by
time.
val query :
select:(B0_zero.Op.t -> bool) ->
select_deps:(dom:B0_zero.Op.t list -> B0_zero.Op.t list -> B0_zero.Op.t list) ->
filter:(B0_zero.Op.t -> bool) ->
order:(B0_zero.Op.t list -> B0_zero.Op.t list) ->
query
query ~select ~select_deps ~filer ~order
is an operation query that select
s operations, their dependencies (or not) according to select_deps
, filters the result with filter
and orders them by order
.
val select_cli :
?docs:string ->
?marks:string list Cmdliner.Term.t ->
unit ->
(B0_zero.Op.t -> bool) Cmdliner.Term.t
val select_deps_cli :
?docs:string ->
unit ->
(dom:B0_zero.Op.t list ->
B0_zero.Op.t list ->
B0_zero.Op.t list)
Cmdliner.Term.t
val filter_cli : ?docs:string -> unit -> (B0_zero.Op.t -> bool) Cmdliner.Term.t
val order_cli :
?docs:string ->
unit ->
(B0_zero.Op.t list -> B0_zero.Op.t list) Cmdliner.Term.t
s_selection_options
is a section name for build operation selection options.
val query_cli : ?docs:string -> unit -> query Cmdliner.Term.t
query_cli ~docs ()
is a command line interface to select build operations. docs
is where the option are documented, defaults to Cmdliner.Manpage.s_options
query_man
is a manual fragment for query_cli
.