summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-25 19:32:52 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-25 19:32:52 -0800
commitc7102daadc19a7f763b21d5bb16de7a07932168a (patch)
tree434d017643bbdc59caa5839df1ccc0a8d970d1af /core
parent30f2d8a42c0f292f2a2ef3f0288f1297fb59af39 (diff)
downloadmill-c7102daadc19a7f763b21d5bb16de7a07932168a.tar.gz
mill-c7102daadc19a7f763b21d5bb16de7a07932168a.tar.bz2
mill-c7102daadc19a7f763b21d5bb16de7a07932168a.zip
Remove `TaskModule`, make default-task selection to be by-name (tentatively hardcoded to `run`) so we can pass CLI arguments to the default run tasks
Forward CLI arguments to the `TestModule#run` command; you can now select what tests you want to run using uTest, via: ``` mill run Core.test mill.define.ApplicativeTests ```
Diffstat (limited to 'core')
-rw-r--r--core/src/main/scala/mill/Main.scala36
-rw-r--r--core/src/main/scala/mill/define/Task.scala3
2 files changed, 17 insertions, 22 deletions
diff --git a/core/src/main/scala/mill/Main.scala b/core/src/main/scala/mill/Main.scala
index 4012128a..cf840a51 100644
--- a/core/src/main/scala/mill/Main.scala
+++ b/core/src/main/scala/mill/Main.scala
@@ -10,7 +10,6 @@ import mill.eval.{Evaluator, Result}
import mill.util.OSet
import ammonite.main.Scripts.pathScoptRead
import ammonite.repl.Repl
-import mill.define.Task.TaskModule
object Main {
@@ -61,26 +60,25 @@ object Main {
.find(_.label == last)
.map{x => x.run(hierarchy.node(obj, remainingCrossSelectors))}
- def targetModule: Seq[Task[Any]] = for{
+ def invokeCommand[V](mirror: Mirror[T, V], name: String) = for{
+ cmd <- mirror.commands.find(_.name == name)
+ } yield cmd.invoke(
+ mirror.node(obj, remainingCrossSelectors),
+ ammonite.main.Scripts.groupArgs(rest.toList)
+ ) match {
+ case Router.Result.Success(v) => Right(v)
+ case _ => Left(s"Command failed $last")
+ }
+
+ def runCommand = for{
(label, child) <- hierarchy.children
if label == last
- node <- child.node(obj, remainingCrossSelectors) match{
- case x: TaskModule => Some(x)
- case _ => None
- }
- } yield node.self()
-
- def command =
- for(x <- hierarchy.commands.find(_.name == last))
- yield x.invoke(
- hierarchy.node(obj, remainingCrossSelectors),
- ammonite.main.Scripts.groupArgs(rest.toList)
- ) match {
- case Router.Result.Success(v) => Right(v)
- case _ => Left(s"Command failed $last")
- }
-
- command orElse target.map(Right(_)) orElse targetModule.headOption.map(Right(_)) match{
+ res <- invokeCommand(child, "run")
+ } yield res
+
+ def command = invokeCommand(hierarchy, last)
+
+ command orElse target.map(Right(_)) orElse runCommand.headOption match{
case None => Left("Cannot resolve task " + renderSelector(
(Mirror.Segment.Label(last) :: revSelectorsSoFar).reverse)
)
diff --git a/core/src/main/scala/mill/define/Task.scala b/core/src/main/scala/mill/define/Task.scala
index 91eb3793..0e7b4375 100644
--- a/core/src/main/scala/mill/define/Task.scala
+++ b/core/src/main/scala/mill/define/Task.scala
@@ -145,9 +145,6 @@ object Task {
trait Module extends mill.define.Cacher[Target]{
def wrapCached[T](t: Target[T], enclosing: String): Target[T] = t
}
- trait TaskModule extends Module {
- def self(): Task[_]
- }
class Task0[T](t: T) extends Task[T]{
lazy val t0 = t