68 lines
1.5 KiB
Text
68 lines
1.5 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, Mac Malone
|
|
-/
|
|
import Lean.Data.Name
|
|
import Leanpkg2.LeanVersion
|
|
|
|
open Lean System
|
|
|
|
namespace Leanpkg2
|
|
|
|
def buildPath : FilePath := "build"
|
|
def tempBuildPath := buildPath / "temp"
|
|
def depsPath := buildPath / "deps"
|
|
|
|
inductive Source where
|
|
| path (dir : FilePath) : Source
|
|
| git (url rev : String) (branch : Option String) : Source
|
|
|
|
structure Dependency where
|
|
name : String
|
|
src : Source
|
|
|
|
structure PackageConfig where
|
|
name : String
|
|
version : String
|
|
leanVersion : String := leanVersionString
|
|
timeout : Option Nat := none
|
|
module : Name := name.capitalize
|
|
dependencies : List Dependency := []
|
|
deriving Inhabited
|
|
|
|
structure Package where
|
|
dir : FilePath
|
|
config : PackageConfig
|
|
deriving Inhabited
|
|
|
|
namespace Package
|
|
|
|
def name (self : Package) :=
|
|
self.config.name
|
|
|
|
def module (self : Package) :=
|
|
self.config.module
|
|
|
|
def dependencies (self : Package) :=
|
|
self.config.dependencies
|
|
|
|
def timeout (self : Package) :=
|
|
self.config.timeout
|
|
|
|
def sourceDir (self : Package) :=
|
|
self.dir
|
|
|
|
def sourceRoot (self : Package) :=
|
|
self.sourceDir / self.config.module.toString
|
|
|
|
def buildDir (self : Package) :=
|
|
self.dir / Leanpkg2.buildPath
|
|
|
|
def buildRoot (self : Package) :=
|
|
self.buildDir / self.config.module.toString
|
|
|
|
def oleanRoot (self : Package) :=
|
|
self.buildRoot.withExtension "olean"
|
|
|
|
end Package
|