Skip to content

Commit 0d0c5d2

Browse files
committed
feat: lake: semver version requirements (WIP)
1 parent 4eb7364 commit 0d0c5d2

File tree

4 files changed

+436
-31
lines changed

4 files changed

+436
-31
lines changed

src/lake/Lake/Load/Materialize.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,14 @@ end MaterializedDep
115115
inductive InputVer
116116
| none
117117
| git (rev : String)
118-
| std (ver : StdVer)
118+
| ver (ver : VerRange)
119119

120120
def pkgNotIndexed (scope name : String) (ver : InputVer) : String :=
121121
let (leanVer, tomlVer) :=
122122
match ver with
123123
| .none => ("", "")
124124
| .git rev => (s!" @ git {repr rev}", s!"\n rev = {repr rev}")
125-
| .std ver => (s!" @ {repr ver.toString}", s!"\n version = {repr ver.toString}")
125+
| .ver ver => (s!" @ {repr ver.toString}", s!"\n version = {repr ver.toString}")
126126
s!"{scope}/{name}: package not found on Reservoir.
127127
128128
If the package is on GitHub, you can add a Git source. For example:
@@ -163,10 +163,10 @@ public def Dependency.materialize
163163
| return .none
164164
if let some ver := ver.dropPrefix? "git#" then
165165
return .git ver.toString
166-
else if let .ok ver := StdVer.parse ver then
167-
return .std ver
168166
else
169-
error s!"{dep.name}: unsupported dependency version format '{ver}'"
167+
match VerRange.parse ver with
168+
| .ok ver => return .ver ver
169+
| .error e => error s!"{dep.name}: invalid dependency version range: {e}"
170170
let depName := dep.name.toString (escape := false)
171171
let pkg ←
172172
match (← Reservoir.fetchPkg? lakeEnv dep.scope depName |>.toLogT) with
@@ -182,10 +182,10 @@ public def Dependency.materialize
182182
match ver with
183183
| .none => defaultBranch?
184184
| .git rev => some rev
185-
| .std ver =>
186-
match (← Reservoir.fetchPkgVersions lakeEnv dep.scope depName |>.toLogT) with
185+
| .ver ver =>
186+
match (← Reservoir.fetchPkgVersions lakeEnv dep.scope depName |>.toLogT) with
187187
| .ok vers =>
188-
if let some ver := vers.find? (·.version == ver) then
188+
if let some ver := vers.find? (ver.test ·.version) then
189189
logInfo s!"{dep.scope}/{depName}: using version `{ver.version}` at revision `{ver.revision}`"
190190
pure ver.revision
191191
else

0 commit comments

Comments
 (0)