Recursive Building #
This module defines Lake's top-level build monad, FetchM
, used
for performing recursive builds. A recursive build is a build function
which can fetch the results of other (recursive) builds. This is done
using the fetch
function defined in this module.
A recursive build of a Lake build store that may encounter a cycle.
Equations
Instances For
Equations
- Lake.instMonadLiftLogIORecBuildM = { monadLift := fun {α : Type} => Lake.ELogT.takeAndRun }
Equations
- Lake.instMonadLiftJobMRecBuildM = { monadLift := fun {α : Type} => Lake.RecBuildM.runJobM }
Run a recursive build.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run a recursive build in a fresh build store.
Equations
- build.run' = (fun (x : α × Lake.BuildStore) => x.fst) <$> Lake.RecBuildM.run ∅ ∅ build
Instances For
Log build cycle and error.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lake.instMonadCycleOfBuildKeyRecBuildM = Lake.MonadCycleOf.mk fun {α : Type} => Lake.buildCycleError
A build function for any element of the Lake build index.
Equations
- Lake.IndexBuildFn m = ((info : Lake.BuildInfo) → m (Lake.BuildData info.key))
Instances For
A transformer to equip a monad with a build function for the Lake index.
Equations
- Lake.IndexT m = Lake.EquipT (Lake.IndexBuildFn m) m
Instances For
The top-level monad for Lake build functions.
Equations
Instances For
The top-level monad for Lake build functions. Renamed FetchM
.
Equations
Instances For
The old build monad. Uses should generally be replaced by FetchM
.
Equations
Instances For
Fetch the result associated with the info using the Lake build index.
Instances For
Wraps stray I/O, logs, and errors in x
into the produced job.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Registers the job for the top-level build monitor,
(e.g., the Lake CLI progress UI), assigning it caption
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Registers the produced job for the top-level build monitor
(e.g., the Lake CLI progress UI), assigning it caption
.
Stray I/O, logs, and errors produced by x
will be wrapped into the job.
Equations
- Lake.withRegisterJob caption x optional = do let job ← Lake.ensureJob x Lake.registerJob caption job optional
Instances For
Registers the produced job for the top-level build monitor if it is not already (i.e., it has an empty caption).
Equations
- Lake.maybeRegisterJob caption job = if job.caption.isEmpty = true then Lake.registerJob caption job else pure job