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.