lean4-htt/Lake/Load/Workspace.lean

19 lines
776 B
Text

/-
Copyright (c) 2022 Mac Malone. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mac Malone
-/
import Lake.Load.Resolve
namespace Lake
def loadWorkspace (config : LoadConfig) (updateDeps := false) : LogIO Workspace := do
Lean.searchPathRef.set config.env.leanSearchPath
let root ← Package.load config.rootDir config.options config.configFile
let ws : Workspace := {root, env := config.env}
let manifest ← Manifest.loadFromFile ws.manifestFile |>.catchExceptions fun _ => pure {}
let (packageMap, manifest) ← resolveDeps ws root updateDeps |>.run manifest
unless manifest.isEmpty do
manifest.saveToFile ws.manifestFile
let packageMap := packageMap.insert root.name root
return {ws with packageMap}