diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-03-19 08:15:32 -0700 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-03-19 09:38:19 -0700 |
commit | 1c507efbc4ce13ad39a056c4c77eb280f0b224e7 (patch) | |
tree | db6c19cddc837bd994f4ae334a639167e3743d8c /core | |
parent | 7f9d508afe1e3e01ff0b5ed50e678d6798004b47 (diff) | |
parent | e7ac7323693edbdc350ec36b578ba3e101657360 (diff) | |
download | mill-1c507efbc4ce13ad39a056c4c77eb280f0b224e7.tar.gz mill-1c507efbc4ce13ad39a056c4c77eb280f0b224e7.tar.bz2 mill-1c507efbc4ce13ad39a056c4c77eb280f0b224e7.zip |
merge
Diffstat (limited to 'core')
-rw-r--r-- | core/src/mill/eval/Evaluator.scala | 6 | ||||
-rw-r--r-- | core/src/mill/util/ClassLoader.scala | 11 | ||||
-rw-r--r-- | core/src/mill/util/Ctx.scala | 11 |
3 files changed, 22 insertions, 6 deletions
diff --git a/core/src/mill/eval/Evaluator.scala b/core/src/mill/eval/Evaluator.scala index e61c2c4c..1e1b8b35 100644 --- a/core/src/mill/eval/Evaluator.scala +++ b/core/src/mill/eval/Evaluator.scala @@ -26,7 +26,8 @@ case class Labelled[T](task: NamedTask[T], case _ => None } } -case class Evaluator[T](outPath: Path, +case class Evaluator[T](home: Path, + outPath: Path, externalOutPath: Path, rootModule: mill.define.BaseModule, log: Logger, @@ -265,7 +266,8 @@ case class Evaluator[T](outPath: Path, throw new Exception("No `dest` folder available here") } }, - multiLogger + multiLogger, + home ) val out = System.out diff --git a/core/src/mill/util/ClassLoader.scala b/core/src/mill/util/ClassLoader.scala index a1b42158..b53150c2 100644 --- a/core/src/mill/util/ClassLoader.scala +++ b/core/src/mill/util/ClassLoader.scala @@ -5,7 +5,9 @@ import java.net.{URL, URLClassLoader} import io.github.retronym.java9rtexport.Export object ClassLoader { - def create(urls: Seq[URL], parent: java.lang.ClassLoader): URLClassLoader = { + def create(urls: Seq[URL], + parent: java.lang.ClassLoader) + (implicit ctx: Ctx.Home): URLClassLoader = { val cl = new URLClassLoader(urls.toArray, parent) if (!ammonite.util.Util.java9OrAbove) return cl try { @@ -13,7 +15,12 @@ object ClassLoader { cl } catch { case _: ClassNotFoundException => - new URLClassLoader((urls ++ Some(Export.export().toURI.toURL)).toArray, parent) + val path = ctx.home + val rtFile = new java.io.File(path.toIO, s"rt-${System.getProperty("java.version")}.jar") + if (!rtFile.exists) { + java.nio.file.Files.copy(Export.export().toPath, rtFile.toPath) + } + new URLClassLoader((urls ++ Some(rtFile.toURI.toURL)).toArray, parent) } } } diff --git a/core/src/mill/util/Ctx.scala b/core/src/mill/util/Ctx.scala index 55cc05ab..99818194 100644 --- a/core/src/mill/util/Ctx.scala +++ b/core/src/mill/util/Ctx.scala @@ -20,6 +20,9 @@ object Ctx{ trait Log{ def log: Logger } + trait Home{ + def home: Path + } object Log{ implicit def logToCtx(l: Logger): Log = new Log { def log = l } } @@ -27,13 +30,17 @@ object Ctx{ def args: IndexedSeq[_] } + def defaultHome = ammonite.ops.home / ".mill" / "ammonite" + } class Ctx(val args: IndexedSeq[_], dest0: () => Path, - val log: Logger) + val log: Logger, + val home: Path) extends Ctx.Dest with Ctx.Log - with Ctx.Args{ + with Ctx.Args + with Ctx.Home{ def dest = dest0() def length = args.length |