From 9f6151f438d7661590c09be13af0f2df8bf5e701 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sat, 3 Mar 2018 07:11:13 -0800 Subject: make mainClass discovery work in ScalaJSModule#run Also disable ScalaJSModule#runMain, since the official Scala.js-SBT plugin does not support it and it requires an expensive re-linking every time it is run. --- scalajslib/src/mill/scalajslib/ScalaJSModule.scala | 41 +++++++++------------- 1 file changed, 17 insertions(+), 24 deletions(-) (limited to 'scalajslib/src') diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index b3cc28a4..5a3b6526 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -4,7 +4,7 @@ package scalajslib import ammonite.ops.{Path, exists, ls, mkdir, rm} import coursier.Cache import coursier.maven.MavenRepository -import mill.eval.PathRef +import mill.eval.{PathRef, Result} import mill.eval.Result.Success import mill.scalalib.Lib.resolveDependencies import mill.scalalib.{CompilationResult, Dep, DepSyntax, TestModule} @@ -71,7 +71,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => ScalaJSBridge.scalaJSBridge(), toolsClasspath(), runClasspath(), - mainClass(), + finalMainClassOpt().toOption, FastOpt ) } @@ -81,39 +81,32 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer => ScalaJSBridge.scalaJSBridge(), toolsClasspath(), runClasspath(), - mainClass(), + finalMainClassOpt().toOption, FullOpt ) } - override def runLocal(args: String*) = T.command { run(args:_*) } + override def runLocal(args: String*) = T.command { run(args:_*) } override def run(args: String*) = T.command { - if(mainClass().isEmpty) { - throw new RuntimeException("No mainClass provided!") + finalMainClassOpt() match{ + case Left(err) => Result.Failure(err) + case Right(_) => + ScalaJSBridge.scalaJSBridge().run( + toolsClasspath().map(_.path), + fastOpt().path.toIO + ) + Result.Success(()) } - ScalaJSBridge.scalaJSBridge().run( - toolsClasspath().map(_.path), - fastOpt().path.toIO - ) } - override def runMainLocal(mainClass: String, args: String*) = T.command { runMain(mainClass, args:_*) } - - override def runMain(mainClass: String, args: String*) = T.command { - val linkedFile = link( - ScalaJSBridge.scalaJSBridge(), - toolsClasspath(), - runClasspath(), - Some(mainClass), - FastOpt - ) + override def runMainLocal(mainClass: String, args: String*) = T.command[Unit] { + mill.eval.Result.Failure("runMain is not supported in Scala.js") + } - ScalaJSBridge.scalaJSBridge().run( - toolsClasspath().map(_.path), - linkedFile.path.toIO - ) + override def runMain(mainClass: String, args: String*) = T.command[Unit] { + mill.eval.Result.Failure("runMain is not supported in Scala.js") } def link(worker: ScalaJSWorker, -- cgit v1.2.3