Package Declarations #
DSL definitions for packages and hooks.
The name given to the definition created by the package
syntax.
Equations
- Lake.DSL.packageDeclName = `_package
Instances For
Defines the configuration of a Lake package. Has many forms:
package «pkg-name»
package «pkg-name» { /- config opts -/ }
package «pkg-name» where /- config opts -/
There can only be one package
declaration per Lake configuration file.
The defined package configuration will be available for reference as _package
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
Equations
- Lake.DSL.PackageDecl = Lean.TSyntax `Lake.DSL.packageDecl
Instances For
Equations
- Lake.DSL.instCoePackageDeclCommand = { coe := fun (x : Lake.DSL.PackageDecl) => { raw := x.raw } }
Declare a post-lake update
hook for the package.
Runs the monadic action is after a successful lake update
execution
in this package or one of its downstream dependents.
Example
This feature enables Mathlib to synchronize the Lean toolchain and run
cache get
after a lake update
:
lean_exe cache
post_update pkg do
let wsToolchainFile := (← getRootPackage).dir / "lean-toolchain"
let mathlibToolchain ← IO.FS.readFile <| pkg.dir / "lean-toolchain"
IO.FS.writeFile wsToolchainFile mathlibToolchain
let exeFile ← runBuild cache.fetch
let exitCode ← env exeFile.toString #["get"]
if exitCode ≠ 0 then
error s!"{pkg.name}: failed to fetch cache"
Equations
- One or more equations did not get rendered due to their size.