diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-25 19:32:52 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-25 19:32:52 -0800 |
commit | c7102daadc19a7f763b21d5bb16de7a07932168a (patch) | |
tree | 434d017643bbdc59caa5839df1ccc0a8d970d1af /core | |
parent | 30f2d8a42c0f292f2a2ef3f0288f1297fb59af39 (diff) | |
download | mill-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.scala | 36 | ||||
-rw-r--r-- | core/src/main/scala/mill/define/Task.scala | 3 |
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 |