lean4-htt/Lake/LeanVersion.lean

39 lines
1.1 KiB
Text

/-
Copyright (c) 2017 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Gabriel Ebner, Sebastian Ullrich
-/
namespace Lake
def leanVersionStringCore :=
s!"{Lean.version.major}.{Lean.version.minor}.{Lean.version.patch}"
def origin := "leanprover/lean4"
def leanVersionString :=
if Lean.version.isRelease then
s!"{origin}:{leanVersionStringCore}"
else if Lean.version.specialDesc ≠ "" then
s!"{origin}:{Lean.version.specialDesc}"
else
s!"{origin}:master"
def uiLeanVersionString :=
if Lean.version.isRelease then
leanVersionStringCore
else if Lean.version.specialDesc ≠ "" then
s!"{leanVersionStringCore}-{Lean.version.specialDesc}"
else
s!"master ({leanVersionStringCore})"
def verifyLeanVersion : IO PUnit := do
let out ← IO.Process.output {
cmd := "lean",
args := #["--version"]
}
if out.exitCode == 0 then
unless out.stdout.drop 14 |>.startsWith uiLeanVersionString do
throw <| IO.userError <|
s!"expected {uiLeanVersionString}, but got {out.stdout.trim}"
else
throw <| IO.userError <| "missing lean!"