Module Jenga_lib.Api.Scheme

A scheme describes, for a given directory, what rules are available in that directory. A scheme can include computation (in the form of Scheme.dep) but there are limits to what can be done, because jenga will reject anything that looks like a dependency cycle.

type t
include sig ... end
val sexp_of_t : t ‑> Sexplib.Sexp.t
val empty : t
val rules : ?⁠sources:Path.t list ‑> Rule.t list ‑> t
val sources : Path.t list ‑> t
val dep : t Dep.t ‑> t

Evaluates the schemes sequentially, which means that latter schemes can depend (using glob) on the targets of the former schemes.

val all : t list ‑> t

Evaluates the schemes sequentially, which means that latter schemes can depend (using glob) on the targets of the former schemes.

val rules_dep : Rule.t list Dep.t ‑> t
val contents : Path.t ‑> (string ‑> t) ‑> t
val glob : Glob.t ‑> (Path.t list ‑> t) ‑> t

Used to glob the directory of the current scheme, without causing dependency cycles. It is an error if any rule created after this glob is matched by the glob.