summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-04 17:34:13 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-04 17:56:48 -0800
commite0e537b937fc411188af2ae7ab417b6f4a9dabbe (patch)
tree703c840477359f296fc7329b16fda39bd183b21b /main/src
parentc3e5d9313763cf31149b0a810a772790ac5bd9e2 (diff)
downloadmill-e0e537b937fc411188af2ae7ab417b6f4a9dabbe.tar.gz
mill-e0e537b937fc411188af2ae7ab417b6f4a9dabbe.tar.bz2
mill-e0e537b937fc411188af2ae7ab417b6f4a9dabbe.zip
Introduced the `mill plan foo.bar` command, which shows you what the execution plan of running the `foo.bar` task looks like without actually evaluating it.
Diffstat (limited to 'main/src')
-rw-r--r--main/src/mill/main/MainModule.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/main/src/mill/main/MainModule.scala b/main/src/mill/main/MainModule.scala
index feafd35d..33eddbe4 100644
--- a/main/src/mill/main/MainModule.scala
+++ b/main/src/mill/main/MainModule.scala
@@ -46,6 +46,22 @@ trait MainModule extends mill.Module{
}
}
+ def plan(evaluator: Evaluator[Any], targets: String*) = mill.T.command{
+ val resolved = RunScript.resolveTasks(
+ mill.main.ResolveTasks, evaluator, targets, multiSelect = true
+ )
+
+ resolved match{
+ case Left(err) => Result.Failure(err)
+ case Right(rs) =>
+ val (sortedGroups, transitive) = Evaluator.plan(evaluator.rootModule, rs)
+ for(Right(r) <- sortedGroups.keys()){
+ println(r.segments.render)
+ }
+ Result.Success(())
+ }
+ }
+
def describe(evaluator: Evaluator[Any], targets: String*) = mill.T.command{
MainModule.resolveTasks(evaluator, targets, multiSelect = true){ tasks =>
for{