diff options
Diffstat (limited to 'main/src/main/ReplApplyHandler.scala')
-rw-r--r-- | main/src/main/ReplApplyHandler.scala | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/main/src/main/ReplApplyHandler.scala b/main/src/main/ReplApplyHandler.scala index 6f1e060d..7f959929 100644 --- a/main/src/main/ReplApplyHandler.scala +++ b/main/src/main/ReplApplyHandler.scala @@ -1,14 +1,13 @@ package mill.main +import scala.collection.mutable +import mill.api.Strict.Agg import mill.define.Applicative.ApplyHandler import mill.define.Segment.Label import mill.define._ import mill.eval.{Evaluator, Result} -import mill.api.Strict.Agg - -import scala.collection.mutable object ReplApplyHandler{ def apply[T](home: os.Path, disableTicker: Boolean, @@ -17,7 +16,8 @@ object ReplApplyHandler{ rootModule: mill.define.BaseModule, discover: Discover[_], debugLog: Boolean, - keepGoing: Boolean) = { + keepGoing: Boolean, + systemProperties: Map[String, String]): ReplApplyHandler = { new ReplApplyHandler( pprinter0, new Evaluator( @@ -36,7 +36,8 @@ object ReplApplyHandler{ debugEnabled = debugLog ), failFast = !keepGoing - ) + ), + systemProperties ) } def pprintCross(c: mill.define.Cross[_], evaluator: Evaluator) = { @@ -113,8 +114,15 @@ object ReplApplyHandler{ } } + class ReplApplyHandler(pprinter0: pprint.PPrinter, - val evaluator: Evaluator) extends ApplyHandler[Task] { + val evaluator: Evaluator, + systemProperties: Map[String, String]) extends ApplyHandler[Task] { + + systemProperties.foreach {case (k,v) => + System.setProperty(k,v) + } + // Evaluate classLoaderSig only once in the REPL to avoid busting caches // as the user enters more REPL commands and changes the classpath val classLoaderSig = Evaluator.classLoaderSig |