summaryrefslogtreecommitdiff
path: root/main/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main')
-rw-r--r--main/src/main/MainRunner.scala6
-rw-r--r--main/src/main/MillServerMain.scala12
-rw-r--r--main/src/main/ReplApplyHandler.scala20
-rw-r--r--main/src/main/RunScript.scala7
4 files changed, 33 insertions, 12 deletions
diff --git a/main/src/main/MainRunner.scala b/main/src/main/MainRunner.scala
index e08905a6..c773087c 100644
--- a/main/src/main/MainRunner.scala
+++ b/main/src/main/MainRunner.scala
@@ -25,7 +25,8 @@ class MainRunner(val config: ammonite.main.Cli.Config,
env : Map[String, String],
setIdle: Boolean => Unit,
debugLog: Boolean,
- keepGoing: Boolean)
+ keepGoing: Boolean,
+ systemProperties: Map[String, String])
extends ammonite.MainRunner(
config, outprintStream, errPrintStream,
stdIn, outprintStream, errPrintStream
@@ -85,7 +86,8 @@ class MainRunner(val config: ammonite.main.Cli.Config,
debugEnabled = debugLog
),
env,
- keepGoing = keepGoing
+ keepGoing = keepGoing,
+ systemProperties
)
result match{
diff --git a/main/src/main/MillServerMain.scala b/main/src/main/MillServerMain.scala
index 862daaf7..500c3e8f 100644
--- a/main/src/main/MillServerMain.scala
+++ b/main/src/main/MillServerMain.scala
@@ -21,7 +21,8 @@ trait MillServerMain[T]{
stdout: PrintStream,
stderr: PrintStream,
env : Map[String, String],
- setIdle: Boolean => Unit): (Boolean, Option[T])
+ setIdle: Boolean => Unit,
+ systemProperties: Map[String, String]): (Boolean, Option[T])
}
object MillServerMain extends mill.main.MillServerMain[Evaluator.State]{
@@ -44,6 +45,7 @@ object MillServerMain extends mill.main.MillServerMain[Evaluator.State]{
mill.main.client.Locks.files(args0(0))
).run()
}
+
def main0(args: Array[String],
stateCache: Option[Evaluator.State],
mainInteractive: Boolean,
@@ -51,7 +53,8 @@ object MillServerMain extends mill.main.MillServerMain[Evaluator.State]{
stdout: PrintStream,
stderr: PrintStream,
env : Map[String, String],
- setIdle: Boolean => Unit) = {
+ setIdle: Boolean => Unit,
+ systemProperties: Map[String, String]) = {
MillMain.main0(
args,
stateCache,
@@ -60,7 +63,8 @@ object MillServerMain extends mill.main.MillServerMain[Evaluator.State]{
stdout,
stderr,
env,
- setIdle = setIdle
+ setIdle = setIdle,
+ systemProperties
)
}
}
@@ -132,6 +136,7 @@ class Server[T](lockBase: String,
}
val args = Util.parseArgs(argStream)
val env = Util.parseMap(argStream)
+ val systemProperties = Util.parseMap(argStream)
argStream.close()
@volatile var done = false
@@ -147,6 +152,7 @@ class Server[T](lockBase: String,
stderr,
env.asScala.toMap,
idle = _,
+ systemProperties.asScala.toMap
)
sm.stateCache = newStateCache
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
diff --git a/main/src/main/RunScript.scala b/main/src/main/RunScript.scala
index ea8e554f..ab53aa1a 100644
--- a/main/src/main/RunScript.scala
+++ b/main/src/main/RunScript.scala
@@ -30,9 +30,14 @@ object RunScript{
stateCache: Option[Evaluator.State],
log: Logger,
env : Map[String, String],
- keepGoing: Boolean)
+ keepGoing: Boolean,
+ systemProperties: Map[String, String])
: (Res[(Evaluator, Seq[PathRef], Either[String, Seq[ujson.Value]])], Seq[(os.Path, Long)]) = {
+ systemProperties.foreach {case (k,v) =>
+ System.setProperty(k, v)
+ }
+
val (evalState, interpWatched) = stateCache match{
case Some(s) if watchedSigUnchanged(s.watched) => Res.Success(s) -> s.watched
case _ =>