summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/src/mill/main/MagicScopt.scala46
-rw-r--r--main/src/mill/main/MainModule.scala15
-rw-r--r--main/src/mill/main/MainRunner.scala3
-rw-r--r--main/src/mill/main/MainScopts.scala49
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala2
-rw-r--r--scalalib/src/mill/scalalib/PublishModule.scala4
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala2
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala10
-rw-r--r--scalaworker/src/mill/scalaworker/ScalaWorker.scala12
9 files changed, 73 insertions, 70 deletions
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)