summaryrefslogtreecommitdiff
path: root/core/src/main/scala/mill/main/MainRunner.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-12-28 10:46:19 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-12-28 12:18:07 -0800
commit9f2f37602b6e93f5e2900439d0c66efd29a30862 (patch)
treed353df7ca1fbcc22394d07d61b21b7ce046c3231 /core/src/main/scala/mill/main/MainRunner.scala
parent8b39024ef427f670d42ca8ab57e618622a0fee54 (diff)
downloadmill-9f2f37602b6e93f5e2900439d0c66efd29a30862.tar.gz
mill-9f2f37602b6e93f5e2900439d0c66efd29a30862.tar.bz2
mill-9f2f37602b6e93f5e2900439d0c66efd29a30862.zip
First pass at generating CLI output when you run `Target`s, based on their return values, converted to JSON
Diffstat (limited to 'core/src/main/scala/mill/main/MainRunner.scala')
-rw-r--r--core/src/main/scala/mill/main/MainRunner.scala27
1 files changed, 21 insertions, 6 deletions
diff --git a/core/src/main/scala/mill/main/MainRunner.scala b/core/src/main/scala/mill/main/MainRunner.scala
index 28d0a284..f354e838 100644
--- a/core/src/main/scala/mill/main/MainRunner.scala
+++ b/core/src/main/scala/mill/main/MainRunner.scala
@@ -4,13 +4,15 @@ import ammonite.ops.Path
import ammonite.util.{Imports, Name, Res, Util}
import mill.discover.Discovered
import mill.eval.Evaluator
+import upickle.Js
/**
* Customized version of [[ammonite.MainRunner]], allowing us to run Mill
* `build.sc` scripts with mill-specific tweaks such as a custom
* `scriptCodeWrapper` or with a persistent evaluator between runs.
*/
-class MainRunner(config: ammonite.main.Cli.Config)
+class MainRunner(config: ammonite.main.Cli.Config,
+ show: Boolean)
extends ammonite.MainRunner(
config,
System.out, System.err, System.in, System.out, System.err
@@ -31,9 +33,9 @@ class MainRunner(config: ammonite.main.Cli.Config)
)
result match{
case Res.Success(data) =>
- val (eval, evaluationWatches) = data
+ val (eval, evaluationWatches, res) = data
lastEvaluator = Some((interpWatched, eval))
- (result, interpWatched ++ evaluationWatches)
+ (Res.Success(res.flatMap(_._2)), interpWatched ++ evaluationWatches)
case _ =>
(result, interpWatched)
}
@@ -42,12 +44,25 @@ class MainRunner(config: ammonite.main.Cli.Config)
}
}
)
+
+ override def handleWatchRes[T](res: Res[T], printing: Boolean) = {
+ res match{
+ case Res.Success(value) =>
+ if (show){
+ for(json <- value.asInstanceOf[Seq[Js.Value]]){
+ System.out.println(json)
+ }
+ }
+
+ true
+
+ case _ => super.handleWatchRes(res, printing)
+ }
+
+ }
override def initMain(isRepl: Boolean) = {
super.initMain(isRepl).copy(scriptCodeWrapper = mill.main.MainRunner.CustomCodeWrapper)
}
- override def handleWatchRes[T](res: Res[T], printing: Boolean) = {
- super.handleWatchRes(res, printing = false)
- }
}
object MainRunner{