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 }
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 = do let job ← Lake.ensureJob x Lake.registerJob caption job
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