A String
pattern. Matches some subset of strings.
- satisfies: (String → Bool) → optParam Lake.Name Lean.Name.anonymous → Lake.StrPat
Matches a string that satisfies an arbitrary predicate (optionally identified by a
Name
). - mem: Array String → Lake.StrPat
Matches a string that is a member of the array
- startsWith: String → Lake.StrPat
Matches a string that starts with this prefix.
Instances For
Equations
- Lake.instInhabitedStrPat = { default := Lake.StrPat.satisfies default default }
Equations
- Lake.instCoeArrayStringStrPat = { coe := Lake.StrPat.mem }
Equations
- Lake.instCoeForallStringBoolStrPat = { coe := fun (f : String → Bool) => Lake.StrPat.satisfies f }
Matches nothing.
Equations
Instances For
Equations
- Lake.instEmptyCollectionStrPat = { emptyCollection := Lake.StrPat.none }
Whether a string is "version-like".
That is, a v
followed by a digit.
Equations
Instances For
Matches a "version-like" string: a v
followed by a digit.
Equations
Instances For
Builtin StrPat
presets available to TOML for versionTags
.
Equations
- Lake.versionTagPresets = (Lake.NameMap.empty.insert `verLike Lake.StrPat.verLike).insert `default Lake.defaultVersionTags
Instances For
Returns whether the string s
matches the pattern.
Equations
- Lake.StrPat.matches s (Lake.StrPat.satisfies f name) = f s
- Lake.StrPat.matches s (Lake.StrPat.mem xs) = xs.contains s
- Lake.StrPat.matches s (Lake.StrPat.startsWith p) = p.isPrefixOf s
Instances For
PackageConfig #
A Package
's declarative configuration.
- packagesDir : Lake.FilePath
- buildType : Lake.BuildType
- leanOptions : Array Lake.LeanOption
- moreServerOptions : Array Lake.LeanOption
- backend : Lake.Backend
- name : Lake.Name
The
Name
of the package. - manifestFile : Option Lake.FilePath
This field is deprecated.
The path of a package's manifest file, which stores the exact versions of its resolved dependencies.
Defaults to
defaultManifestFile
(i.e.,lake-manifest.json
). An
Array
of target names to build whenever the package is used.- precompileModules : Bool
Whether to compile each of the package's module into a native shared library that is loaded whenever the module is imported. This speeds up evaluation of metaprograms and enables the interpreter to run functions marked
@[extern]
.Defaults to
false
. Deprecated in favor of
moreGlobalServerArgs
. Additional arguments to pass to the Lean language server (i.e.,lean --server
) launched bylake serve
, both for this package and also for any packages browsed from this one in the same session.Additional arguments to pass to the Lean language server (i.e.,
lean --server
) launched bylake serve
, both for this package and also for any packages browsed from this one in the same session.- srcDir : Lake.FilePath
The directory containing the package's Lean source files. Defaults to the package's directory.
(This will be passed to
lean
as the-R
option.) - buildDir : Lake.FilePath
The directory to which Lake should output the package's build results. Defaults to
defaultBuildDir
(i.e.,.lake/build
). - leanLibDir : Lake.FilePath
The build subdirectory to which Lake should output the package's binary Lean libraries (e.g.,
.olean
,.ilean
files). Defaults todefaultLeanLibDir
(i.e.,lib
). - nativeLibDir : Lake.FilePath
The build subdirectory to which Lake should output the package's native libraries (e.g.,
.a
,.so
,.dll
files). Defaults todefaultNativeLibDir
(i.e.,lib
). - binDir : Lake.FilePath
The build subdirectory to which Lake should output the package's binary executable. Defaults to
defaultBinDir
(i.e.,bin
). - irDir : Lake.FilePath
The build subdirectory to which Lake should output the package's intermediary results (e.g.,
.c
and.o
files). Defaults todefaultIrDir
(i.e.,ir
). The URL of the GitHub repository to upload and download releases of this package. If
none
(the default), for downloads, Lake uses the URL the package was download from (if it is a dependency) and for uploads, usesgh
's default.The URL of the GitHub repository to upload and download releases of this package. If
none
(the default), for downloads, Lake uses the URL the package was download from (if it is a dependency) and for uploads, usesgh
's default.A custom name for the build archive for the GitHub cloud release. If
none
(the default), Lake usesbuildArchive
, which defaults to{(pkg-)name}-{System.Platform.target}.tar.gz
.- buildArchive : String
A custom name for the build archive for the GitHub cloud release. Defaults to
{(pkg-)name}-{System.Platform.target}.tar.gz
. - preferReleaseBuild : Bool
Whether to prefer downloading a prebuilt release (from GitHub) rather than building this package from the source when this package is used as a dependency.
- testDriver : String
The name of the script, executable, or library by
lake test
when this package is the workspace root. To point to a definition in another package, use the syntax<pkg>/<def>
.A script driver will be run by
lake test
with the arguments configured intestDriverArgs
followed by any specified on the CLI (e.g., vialake lint -- <args>...
). An executable driver will be built and then run like a script. A library will just be built. Arguments to pass to the package's test driver. These arguments will come before those passed on the command line via
lake test -- <args>...
.- lintDriver : String
The name of the script or executable used by
lake lint
when this package is the workspace root. To point to a definition in another package, use the syntax<pkg>/<def>
.A script driver will be run by
lake lint
with the arguments configured inlintDriverArgs
followed by any specified on the CLI (e.g., vialake lint -- <args>...
). An executable driver will be built and then run like a script. Arguments to pass to the package's linter. These arguments will come before those passed on the command line via
lake lint -- <args>...
.- version : Lake.StdVer
The package version. Versions have the form:
v!"<major>.<minor>.<patch>[-<specialDescr>]"
A version with a
-
suffix is considered a "prerelease".Lake suggest the following guidelines for incrementing versions:
Major version increment (e.g., v1.3.0 → v2.0.0) Indicates significant breaking changes in the package. Package users are not expected to update to the new version without manual intervention.
Minor version increment (e.g., v1.3.0 → v1.4.0) Denotes notable changes that are expected to be generally backwards compatible. Package users are expected to update to this version automatically and should be able to fix any breakages and/or warnings easily.
Patch version increment (e.g., v1.3.0 → v1.3.1) Reserved for bug fixes and small touchups. Package users are expected to update automatically and should not expect significant breakage, except in the edge case of users relying on the behavior of patched bugs.
Note that backwards-incompatible changes may occur at any version increment. The is because the current nature of Lean (e.g., transitive imports, rich metaprogramming, reducibility in proofs), makes it infeasible to define a completely stable interface for a package. Instead, the different version levels indicate a change's intended significance and how difficult migration is expected to be.
Versions of form the
0.x.x
are considered development versions prior to first official release. Like prerelease, they are not expected to closely follow the above guidelines.Packages without a defined version default to
0.0.0
. - versionTags : Lake.StrPat
Git tags of this package's repository that should be treated as versions. Package indices (e.g., Reservoir) can make use of this information to determine the Git revisions corresponding to released versions.
Defaults to tags that are "version-like". That is, start with a
v
followed by a digit. - description : String
A short description for the package (e.g., for Reservoir).
Custom keywords associated with the package. Reservoir can make use of a package's keywords to group related packages together and make it easier for users to discover them.
Good keywords include the domain (e.g.,
math
,software-verification
,devtool
), specific subtopics (e.g.,topology
,cryptology
), and significant implementation details (e.g.,dsl
,ffi
,cli
). For instance, Lake's keywords could bedevtool
,cli
,dsl
,package-manager
, andbuild-system
.- homepage : String
A URL to information about the package.
Reservoir will already include a link to the package's GitHub repository (if the package is sourced from there). Thus, users are advised to specify something else for this (if anything).
- license : String
The package's license (if one). Should be a valid SPDX License Expression.
Reservoir requires that packages uses an OSI-approved license to be included in its index, and currently only supports single identifier SPDX expressions. For, a list of OSI-approved SPDX license identifiers, see the SPDX LIcense List.
- licenseFiles : Array Lake.FilePath
Files containing licensing information for the package.
These should be the license files that users are expected to include when distributing package sources, which may be more then one file for some licenses. For example, the Apache 2.0 license requires the reproduction of a
NOTICE
file along with the license (if such a file exists).Defaults to
#["LICENSE"]
. - readmeFile : Lake.FilePath
The path to the package's README.
A README should be a Markdown file containing an overview of the package. Reservoir displays the rendered HTML of this file on a package's page. A nonstandard location can be used to provide a different README for Reservoir and GitHub.
Defaults to
README.md
. - reservoir : Bool
Whether Reservoir should include the package in its index. When set to
false
, Reservoir will not add the package to its index and will remove it if it was already there (when Reservoir is next updated).
Instances For
Equations
- One or more equations did not get rendered due to their size.
Package #
Equations
- Lake.OpaquePostUpdateHook pkg = (Lake.OpaquePostUpdateHook.nonemptyType pkg).type
Instances For
Equations
- ⋯ = ⋯
A Lake package -- its location plus its configuration.
- dir : Lake.FilePath
The path to the package's directory.
- relDir : Lake.FilePath
The path to the package's directory relative to the workspace.
- config : Lake.PackageConfig
The package's user-defined configuration.
- relConfigFile : Lake.FilePath
The path to the package's configuration file (relative to
dir
). - relManifestFile : Lake.FilePath
The path to the package's JSON manifest of remote dependencies (relative to
dir
). - scope : String
The package's scope (e.g., in Reservoir).
- remoteUrl : String
The URL to this package's Git remote.
- opaqueDeps : Array Lake.OpaquePackage
(Opaque references to) the package's direct dependencies.
- depConfigs : Array Lake.Dependency
Dependency configurations for the package.
- leanLibConfigs : Lake.OrdNameMap Lake.LeanLibConfig
Lean library configurations for the package.
- leanExeConfigs : Lake.OrdNameMap Lake.LeanExeConfig
Lean binary executable configurations for the package.
- externLibConfigs : Lake.DNameMap (Lake.ExternLibConfig self.config.name)
External library targets for the package.
- opaqueTargetConfigs : Lake.DNameMap (Lake.OpaqueTargetConfig self.config.name)
(Opaque references to) targets defined in the package.
The names of the package's targets to build by default (i.e., on a bare
lake build
of the package).- scripts : Lake.NameMap Lake.Script
Scripts for the package.
- defaultScripts : Array Lake.Script
The names of the package's scripts run by default (i.e., on a bare
lake run
of the package). - postUpdateHooks : Array (Lake.OpaquePostUpdateHook self.config.name)
Post-
lake update
hooks for the package. - testDriver : String
The driver used for
lake test
when this package is the workspace root. - lintDriver : String
The driver used for
lake lint
when this package is the workspace root.
Instances For
Equations
Equations
Equations
- Lake.OpaquePackage.instInhabitedOfPackage = { default := Lake.OpaquePackage.mk default }
Equations
- Lake.instHashablePackage = { hash := fun (pkg : Lake.Package) => hash pkg.config.name }
Equations
- Lake.instBEqPackage = { beq := fun (p1 p2 : Lake.Package) => p1.config.name == p2.config.name }
Equations
Instances For
Equations
Instances For
A package with a name known at type-level.
- dir : Lake.FilePath
- relDir : Lake.FilePath
- config : Lake.PackageConfig
- relConfigFile : Lake.FilePath
- relManifestFile : Lake.FilePath
- scope : String
- remoteUrl : String
- opaqueDeps : Array Lake.OpaquePackage
- depConfigs : Array Lake.Dependency
- leanLibConfigs : Lake.OrdNameMap Lake.LeanLibConfig
- leanExeConfigs : Lake.OrdNameMap Lake.LeanExeConfig
- externLibConfigs : Lake.DNameMap (Lake.ExternLibConfig self.config.name)
- opaqueTargetConfigs : Lake.DNameMap (Lake.OpaqueTargetConfig self.config.name)
- scripts : Lake.NameMap Lake.Script
- defaultScripts : Array Lake.Script
- postUpdateHooks : Array (Lake.OpaquePostUpdateHook self.config.name)
- testDriver : String
- lintDriver : String
- name_eq : self.name = name
Instances For
Equations
- Lake.instCoeOutNPackagePackage = { coe := Lake.NPackage.toPackage }
Equations
- Lake.instCoeDepPackageNPackageName = { coe := { toPackage := pkg, name_eq := ⋯ } }
The type of a post-update hooks monad.
IO
equipped with logging ability and information about the Lake configuration.
Equations
- Lake.PostUpdateFn pkgName = (Lake.NPackage pkgName → Lake.LakeT Lake.LogIO PUnit)
Instances For
- fn : Lake.PostUpdateFn pkgName
Instances For
Equations
- Lake.instInhabitedPostUpdateHook = { default := { fn := default } }
Instances For
Equations
- Lake.OpaquePostUpdateHook.instInhabitedOfPostUpdateHook = { default := Lake.OpaquePostUpdateHook.mk default }
Equations
- Lake.OpaquePostUpdateHook.instCoePostUpdateHook_1 = { coe := Lake.OpaquePostUpdateHook.get }
Equations
- Lake.OpaquePostUpdateHook.instCoePostUpdateHook = { coe := Lake.OpaquePostUpdateHook.mk }
Instances For
- pkg : Lake.Name
- fn : Lake.PostUpdateFn self.pkg
Instances For
The package's versionTags
configuration.
Equations
- self.versionTags = self.config.versionTags
Instances For
The package's description
configuration.
Equations
- self.description = self.config.description
Instances For
The package's licenseFiles
configuration.
Equations
- self.relLicenseFiles = self.config.licenseFiles
Instances For
The package's dir
joined with each of its relLicenseFiles
.
Equations
- self.licenseFiles = Array.map (fun (x : Lake.FilePath) => self.dir / x) self.relLicenseFiles
Instances For
The package's readmeFile
configuration.
Equations
- self.relReadmeFile = self.config.readmeFile
Instances For
The package's direct dependencies.
Equations
- self.deps = Array.map (fun (x : Lake.OpaquePackage) => x.get) self.opaqueDeps
Instances For
The path to the package's Lake directory relative to dir
(e.g., .lake
).
Equations
- x.relLakeDir = Lake.defaultLakeDir
Instances For
The full path to the package's Lake directory (i.e, dir
joined with relLakeDir
).
Instances For
The full path to the package's configuration file.
Instances For
The path to the package's JSON manifest of remote dependencies.
Instances For
The package's testDriverArgs
configuration.
Equations
- self.testDriverArgs = self.config.testDriverArgs
Instances For
The package's lintDriverArgs
configuration.
Equations
- self.lintDriverArgs = self.config.lintDriverArgs
Instances For
The package's extraDepTargets
configuration.
Equations
- self.extraDepTargets = self.config.extraDepTargets
Instances For
The package's platformIndependent
configuration.
Equations
- self.platformIndependent = self.config.platformIndependent
Instances For
The package's releaseRepo
/releaseRepo?
configuration.
Equations
- self.releaseRepo? = HOrElse.hOrElse self.config.releaseRepo fun (x : Unit) => self.config.releaseRepo?
Instances For
The package's buildArchive
/buildArchive?
configuration.
Equations
- self.buildArchive = self.config.buildArchive
Instances For
The path where Lake stores the package's barrel (downloaded from Reservoir).
Instances For
The package's preferReleaseBuild
configuration.
Equations
- self.preferReleaseBuild = self.config.preferReleaseBuild
Instances For
The package's precompileModules
configuration.
Equations
- self.precompileModules = self.config.precompileModules
Instances For
The package's moreGlobalServerArgs
configuration.
Equations
- self.moreGlobalServerArgs = self.config.moreGlobalServerArgs
Instances For
The package's moreServerOptions
configuration appended to its leanOptions
configuration.
Instances For
The package's leanOptions
configuration.
Equations
- self.leanOptions = self.config.leanOptions
Instances For
The package's moreLeanArgs
configuration appended to its leanOptions
configuration.
Equations
- self.moreLeanArgs = Array.map (fun (x : Lake.LeanOption) => x.asCliArg) self.config.leanOptions ++ self.config.moreLeanArgs
Instances For
The package's weakLeanArgs
configuration.
Equations
- self.weakLeanArgs = self.config.weakLeanArgs
Instances For
The package's moreLeancArgs
configuration.
Equations
- self.moreLeancArgs = self.config.moreLeancArgs
Instances For
The package's weakLeancArgs
configuration.
Equations
- self.weakLeancArgs = self.config.weakLeancArgs
Instances For
The package's moreLinkArgs
configuration.
Equations
- self.moreLinkArgs = self.config.moreLinkArgs
Instances For
The package's weakLinkArgs
configuration.
Equations
- self.weakLinkArgs = self.config.weakLinkArgs
Instances For
Whether the given module is considered local to the package.
Equations
- Lake.Package.isLocalModule mod self = Lake.RBArray.any (fun (lib : Lake.LeanLibConfig) => Lake.LeanLibConfig.isLocalModule mod lib) self.leanLibConfigs
Instances For
Whether the given module is in the package (i.e., can build it).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Remove the package's build outputs (i.e., delete its build directory).
Equations
- self.clean = do let __do_lift ← liftM self.buildDir.pathExists if __do_lift = true then IO.FS.removeDirAll self.buildDir else pure PUnit.unit