diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-12-28 10:46:19 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-12-28 12:18:07 -0800 |
commit | 9f2f37602b6e93f5e2900439d0c66efd29a30862 (patch) | |
tree | d353df7ca1fbcc22394d07d61b21b7ce046c3231 /core/src/main/scala/mill/main/MainRunner.scala | |
parent | 8b39024ef427f670d42ca8ab57e618622a0fee54 (diff) | |
download | mill-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.scala | 27 |
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{ |