From ec61701af4527429a1cf3df9a8d0b725ba11df0b Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 9 Feb 2018 19:38:22 -0800 Subject: Some long-overdue renamings --- main/src/mill/main/MagicScopt.scala | 46 -------------------- main/src/mill/main/MainModule.scala | 15 ++++--- main/src/mill/main/MainRunner.scala | 3 -- main/src/mill/main/MainScopts.scala | 49 ++++++++++++++++++++++ scalajslib/src/mill/scalajslib/ScalaJSModule.scala | 2 +- scalalib/src/mill/scalalib/PublishModule.scala | 4 +- scalalib/src/mill/scalalib/ScalaModule.scala | 2 +- scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 10 ++--- scalaworker/src/mill/scalaworker/ScalaWorker.scala | 12 +++--- 9 files changed, 73 insertions(+), 70 deletions(-) delete mode 100644 main/src/mill/main/MagicScopt.scala create mode 100644 main/src/mill/main/MainScopts.scala diff --git a/main/src/mill/main/MagicScopt.scala b/main/src/mill/main/MagicScopt.scala deleted file mode 100644 index e18816c8..00000000 --- a/main/src/mill/main/MagicScopt.scala +++ /dev/null @@ -1,46 +0,0 @@ -package mill.main -import mill.define.ExternalModule -import mill.eval.{Evaluator, PathRef} -import mill.util.ParseArgs - -object MagicScopt{ - - - case class Tasks[T](value: Seq[mill.define.NamedTask[T]]) -} -class EvaluatorScopt[T]() - extends scopt.Read[mill.eval.Evaluator[T]]{ - def arity = 0 - def reads = s => try{ - Evaluator.currentEvaluator.get.asInstanceOf[mill.eval.Evaluator[T]] - } -} -class TargetScopt[T]() - extends scopt.Read[MagicScopt.Tasks[T]]{ - def arity = 0 - def reads = s => { - val rootModule = Evaluator.currentEvaluator.get.rootModule - val d = rootModule.millDiscover - val (expanded, leftover) = ParseArgs(Seq(s)).fold(e => throw new Exception(e), identity) - val resolved = expanded.map{ - case (Some(scoping), segments) => - val moduleCls = rootModule.getClass.getClassLoader.loadClass(scoping.render + "$") - val externalRootModule = moduleCls.getField("MODULE$").get(moduleCls).asInstanceOf[ExternalModule] - val crossSelectors = segments.value.map { - case mill.define.Segment.Cross(x) => x.toList.map(_.toString) - case _ => Nil - } - mill.main.Resolve.resolve(segments.value.toList, externalRootModule, d, leftover, crossSelectors.toList, Nil) - case (None, segments) => - val crossSelectors = segments.value.map { - case mill.define.Segment.Cross(x) => x.toList.map(_.toString) - case _ => Nil - } - mill.main.Resolve.resolve(segments.value.toList, rootModule, d, leftover, crossSelectors.toList, Nil) - } - mill.util.EitherOps.sequence(resolved) match{ - case Left(s) => throw new Exception(s) - case Right(ts) => MagicScopt.Tasks(ts.flatten).asInstanceOf[MagicScopt.Tasks[T]] - } - } -} \ No newline at end of file diff --git a/main/src/mill/main/MainModule.scala b/main/src/mill/main/MainModule.scala index 012ecce5..04cd3553 100644 --- a/main/src/mill/main/MainModule.scala +++ b/main/src/mill/main/MainModule.scala @@ -6,16 +6,19 @@ import mill.util.Watched import pprint.{Renderer, Truncated} trait MainModule extends mill.Module{ + // Need to wrap the returned Module in Some(...) to make sure it + // doesn't get picked up during reflective child-module discovery + val millSelf = Some(this) implicit def millDiscover: mill.define.Discover[_] - implicit def millScoptTargetReads[T] = new mill.main.TargetScopt[T]() + implicit def millScoptTargetReads[T] = new mill.main.Tasks.Scopt[T]() implicit def millScoptEvaluatorReads[T] = new mill.main.EvaluatorScopt[T]() - mill.define.Ctx.make - def resolve(targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{ + + def resolve(targets: mill.main.Tasks[Any]*) = mill.T.command{ targets.flatMap(_.value).foreach(println) } def describe(evaluator: mill.eval.Evaluator[Any], - targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{ + targets: mill.main.Tasks[Any]*) = mill.T.command{ for{ t <- targets target <- t.value @@ -35,7 +38,7 @@ trait MainModule extends mill.Module{ } } def all(evaluator: mill.eval.Evaluator[Any], - targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{ + targets: mill.main.Tasks[Any]*) = mill.T.command{ val (watched, res) = RunScript.evaluate( evaluator, mill.util.Strict.Agg.from(targets.flatMap(_.value)) @@ -43,7 +46,7 @@ trait MainModule extends mill.Module{ Watched((), watched) } def show(evaluator: mill.eval.Evaluator[Any], - targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{ + targets: mill.main.Tasks[Any]*) = mill.T.command{ val (watched, res) = mill.main.RunScript.evaluate( evaluator, mill.util.Strict.Agg.from(targets.flatMap(_.value)) diff --git a/main/src/mill/main/MainRunner.scala b/main/src/mill/main/MainRunner.scala index c073e583..e35c1776 100644 --- a/main/src/mill/main/MainRunner.scala +++ b/main/src/mill/main/MainRunner.scala @@ -100,9 +100,6 @@ class MainRunner(config: ammonite.main.Cli.Config, | def $$main() = Iterator[String]() | | implicit def millDiscover: mill.define.Discover[this.type] = mill.define.Discover[this.type] - | // Need to wrap the returned Module in Some(...) to make sure it - | // doesn't get picked up during reflective child-module discovery - | val millSelf = Some(this) |} | |sealed trait $wrapName extends mill.main.MainModule{ diff --git a/main/src/mill/main/MainScopts.scala b/main/src/mill/main/MainScopts.scala new file mode 100644 index 00000000..acf48d05 --- /dev/null +++ b/main/src/mill/main/MainScopts.scala @@ -0,0 +1,49 @@ +package mill.main +import mill.define.ExternalModule +import mill.eval.{Evaluator, PathRef} +import mill.util.ParseArgs + +case class Tasks[T](value: Seq[mill.define.NamedTask[T]]) + +object Tasks{ + + class Scopt[T]() + extends scopt.Read[Tasks[T]] { + def arity = 0 + + def reads = s => { + val rootModule = Evaluator.currentEvaluator.get.rootModule + val d = rootModule.millDiscover + val (expanded, leftover) = ParseArgs(Seq(s)).fold(e => throw new Exception(e), identity) + val resolved = expanded.map { + case (Some(scoping), segments) => + val moduleCls = rootModule.getClass.getClassLoader.loadClass(scoping.render + "$") + val externalRootModule = moduleCls.getField("MODULE$").get(moduleCls).asInstanceOf[ExternalModule] + val crossSelectors = segments.value.map { + case mill.define.Segment.Cross(x) => x.toList.map(_.toString) + case _ => Nil + } + mill.main.Resolve.resolve(segments.value.toList, externalRootModule, d, leftover, crossSelectors.toList, Nil) + case (None, segments) => + val crossSelectors = segments.value.map { + case mill.define.Segment.Cross(x) => x.toList.map(_.toString) + case _ => Nil + } + mill.main.Resolve.resolve(segments.value.toList, rootModule, d, leftover, crossSelectors.toList, Nil) + } + mill.util.EitherOps.sequence(resolved) match { + case Left(s) => throw new Exception(s) + case Right(ts) => Tasks(ts.flatten).asInstanceOf[Tasks[T]] + } + } + } + +} + +class EvaluatorScopt[T]() + extends scopt.Read[mill.eval.Evaluator[T]]{ + def arity = 0 + def reads = s => try{ + Evaluator.currentEvaluator.get.asInstanceOf[mill.eval.Evaluator[T]] + } +} diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala index 86ebd53d..982f9682 100644 --- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala +++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala @@ -196,7 +196,7 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule { val (doneMsg, results) = mill.scalalib.ScalaWorkerApi .scalaWorker() - .apply( + .runTests( _ => framework, runClasspath().map(_.path), Agg(compile().classes.path), diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala index e6c88b01..8f52eb6a 100644 --- a/scalalib/src/mill/scalalib/PublishModule.scala +++ b/scalalib/src/mill/scalalib/PublishModule.scala @@ -97,7 +97,7 @@ object PublishModule extends ExternalModule{ def publishAll(sonatypeCreds: String, gpgPassphrase: String, - publishArtifacts: mill.main.MagicScopt.Tasks[PublishModule.PublishData], + publishArtifacts: mill.main.Tasks[PublishModule.PublishData], sonatypeUri: String = "https://oss.sonatype.org/service/local", sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots", release: Boolean = false) = T.command{ @@ -116,7 +116,7 @@ object PublishModule extends ExternalModule{ ) } - implicit def millScoptTargetReads[T] = new mill.main.TargetScopt[T]() + implicit def millScoptTargetReads[T] = new mill.main.Tasks.Scopt[T]() def millDiscover: mill.define.Discover[this.type] = mill.define.Discover[this.type] } \ No newline at end of file diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 12123ef8..6548aad4 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -307,7 +307,7 @@ trait TestModule extends ScalaModule with TaskModule { def testLocal(args: String*) = T.command{ val outputPath = T.ctx().dest/"out.json" - mill.scalalib.ScalaWorkerApi.scalaWorker().apply( + mill.scalalib.ScalaWorkerApi.scalaWorker().runTests( TestRunner.framework(testFramework()), runClasspath().map(_.path), Agg(compile().classes.path), diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala index e66864af..b01409c1 100644 --- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala +++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala @@ -58,9 +58,9 @@ trait ScalaWorkerApi { upstreamCompileOutput: Seq[CompilationResult]) (implicit ctx: mill.util.Ctx): mill.eval.Result[CompilationResult] - def apply(frameworkInstance: ClassLoader => sbt.testing.Framework, - entireClasspath: Agg[Path], - testClassfilePath: Agg[Path], - args: Seq[String]) - (implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) + def runTests(frameworkInstance: ClassLoader => sbt.testing.Framework, + entireClasspath: Agg[Path], + testClassfilePath: Agg[Path], + args: Seq[String]) + (implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) } diff --git a/scalaworker/src/mill/scalaworker/ScalaWorker.scala b/scalaworker/src/mill/scalaworker/ScalaWorker.scala index 9ae367e6..4430f710 100644 --- a/scalaworker/src/mill/scalaworker/ScalaWorker.scala +++ b/scalaworker/src/mill/scalaworker/ScalaWorker.scala @@ -36,7 +36,7 @@ object ScalaWorker{ def main(args: Array[String]): Unit = { try{ - val result = new ScalaWorker(null, null).apply( + val result = new ScalaWorker(null, null).runTests( frameworkInstance = TestRunner.framework(args(0)), entireClasspath = Agg.from(args(1).split(" ").map(Path(_))), testClassfilePath = Agg.from(args(2).split(" ").map(Path(_))), @@ -230,11 +230,11 @@ class ScalaWorker(ctx0: mill.util.Ctx, }catch{case e: CompileFailed => mill.eval.Result.Failure(e.toString)} } - def apply(frameworkInstance: ClassLoader => sbt.testing.Framework, - entireClasspath: Agg[Path], - testClassfilePath: Agg[Path], - args: Seq[String]) - (implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) = { + def runTests(frameworkInstance: ClassLoader => sbt.testing.Framework, + entireClasspath: Agg[Path], + testClassfilePath: Agg[Path], + args: Seq[String]) + (implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) = { Jvm.inprocess(entireClasspath, classLoaderOverrideSbtTesting = true, cl => { val framework = frameworkInstance(cl) -- cgit v1.2.3