From 122122729d8567e389f434cfb1c074d3119b0088 Mon Sep 17 00:00:00 2001 From: Robby Date: Mon, 5 Mar 2018 04:06:01 -0600 Subject: Allows users to customize Node.js (Scala.js' NodeJSEnv) in ScalaJSModule (#195) * Adds Node.js configuration in ScalaJSModule. * Adds Node.js configuration in ScalaJSModule test framework. * Refactored ScalaJSBridge Node.js env creation. * Readjusted ScalaJSBridge 0.6 formatting. * Added Node.js config tests. * Removed NodeJSConfig ScalaTest tests and improved log test conditions. --- scalajslib/src/mill/scalajslib/NodeJSConfig.scala | 11 +++++++++++ scalajslib/src/mill/scalajslib/ScalaJSBridge.scala | 12 +++++++----- scalajslib/src/mill/scalajslib/ScalaJSModule.scala | 4 ++++ 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 scalajslib/src/mill/scalajslib/NodeJSConfig.scala (limited to 'scalajslib/src') diff --git a/scalajslib/src/mill/scalajslib/NodeJSConfig.scala b/scalajslib/src/mill/scalajslib/NodeJSConfig.scala new file mode 100644 index 00000000..de39308c --- /dev/null +++ b/scalajslib/src/mill/scalajslib/NodeJSConfig.scala @@ -0,0 +1,11 @@ +package mill.scalajslib + +object NodeJSConfig { + import upickle.default.{ReadWriter => RW, macroRW} + implicit def rw: RW[NodeJSConfig] = macroRW +} + +final case class NodeJSConfig(executable: String = "node", + args: List[String] = Nil, + env: Map[String, String] = Map.empty, + sourceMap: Boolean = true) diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala index 96b48704..e5952291 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala @@ -50,14 +50,15 @@ class ScalaJSWorker { ) } - def run(toolsClasspath: Agg[Path], linkedFile: File): Unit = { - bridge(toolsClasspath).run(linkedFile) + def run(toolsClasspath: Agg[Path], config: NodeJSConfig, linkedFile: File): Unit = { + bridge(toolsClasspath).run(config, linkedFile) } def getFramework(toolsClasspath: Agg[Path], + config: NodeJSConfig, frameworkName: String, linkedFile: File): sbt.testing.Framework = { - bridge(toolsClasspath).getFramework(frameworkName, linkedFile) + bridge(toolsClasspath).getFramework(config, frameworkName, linkedFile) } } @@ -69,9 +70,10 @@ trait ScalaJSBridge { main: String, fullOpt: Boolean): Unit - def run(linkedFile: File): Unit + def run(config: NodeJSConfig, linkedFile: File): Unit - def getFramework(frameworkName: String, + def getFramework(config: NodeJSConfig, + frameworkName: String, linkedFile: File): sbt.testing.Framework } diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index 5a3b6526..4f932e1e 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -94,6 +94,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => case Right(_) => ScalaJSBridge.scalaJSBridge().run( toolsClasspath().map(_.path), + nodeJSConfig(), fastOpt().path.toIO ) Result.Success(()) @@ -156,6 +157,8 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => } override def platformSuffix = s"_sjs${artifactScalaJSVersion()}" + + def nodeJSConfig = T { NodeJSConfig() } } trait TestScalaJSModule extends ScalaJSModule with TestModule { @@ -183,6 +186,7 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule { override def test(args: String*) = T.command { val framework = mill.scalajslib.ScalaJSBridge.scalaJSBridge().getFramework( toolsClasspath().map(_.path), + nodeJSConfig(), testFrameworks().head, fastOptTest().path.toIO ) -- cgit v1.2.3