From 2d779b8ccd0a2f29a7d14dc193b4ad093142b521 Mon Sep 17 00:00:00 2001 From: Anton Sviridov Date: Sat, 14 Jul 2018 02:21:27 +0100 Subject: add --disable-ticker, handle --color correctly (#379) --- core/src/mill/util/Logger.scala | 37 ++++++++++++---------- main/src/mill/MillMain.scala | 23 +++++++++++--- main/src/mill/main/MainModule.scala | 2 +- main/src/mill/main/MainRunner.scala | 2 ++ main/src/mill/main/ReplApplyHandler.scala | 2 ++ main/test/src/mill/util/ScriptTestSuite.scala | 3 +- main/test/src/mill/util/TestEvaluator.scala | 2 +- scalalib/src/mill/scalalib/TestRunner.scala | 1 + .../src/mill/scalalib/worker/ScalaWorker.scala | 2 +- 9 files changed, 49 insertions(+), 25 deletions(-) diff --git a/core/src/mill/util/Logger.scala b/core/src/mill/util/Logger.scala index ec8de132..37ae8577 100644 --- a/core/src/mill/util/Logger.scala +++ b/core/src/mill/util/Logger.scala @@ -79,6 +79,7 @@ object PrintState{ case object Middle extends PrintState } case class PrintLogger(colored: Boolean, + disableTicker: Boolean, colors: ammonite.util.Colors, outStream: PrintStream, infoStream: PrintStream, @@ -100,23 +101,25 @@ case class PrintLogger(colored: Boolean, errStream.println(colors.error()(s)) } def ticker(s: String) = { - printState match{ - case PrintState.Newline => - infoStream.println(colors.info()(s)) - case PrintState.Middle => - infoStream.println() - infoStream.println(colors.info()(s)) - case PrintState.Ticker => - val p = new PrintWriter(infoStream) - val nav = new ammonite.terminal.AnsiNav(p) - nav.up(1) - nav.clearLine(2) - nav.left(9999) - p.flush() - - infoStream.println(colors.info()(s)) + if(!disableTicker) { + printState match{ + case PrintState.Newline => + infoStream.println(colors.info()(s)) + case PrintState.Middle => + infoStream.println() + infoStream.println(colors.info()(s)) + case PrintState.Ticker => + val p = new PrintWriter(infoStream) + val nav = new ammonite.terminal.AnsiNav(p) + nav.up(1) + nav.clearLine(2) + nav.left(9999) + p.flush() + + infoStream.println(colors.info()(s)) + } + printState = PrintState.Ticker } - printState = PrintState.Ticker } } @@ -199,4 +202,4 @@ case class MultiLogger(colored: Boolean, logger1: Logger, logger2: Logger) exten logger1.close() logger2.close() } -} \ No newline at end of file +} diff --git a/main/src/mill/MillMain.scala b/main/src/mill/MillMain.scala index ad1bd39d..c3a771d3 100644 --- a/main/src/mill/MillMain.scala +++ b/main/src/mill/MillMain.scala @@ -38,6 +38,8 @@ object MillMain { env: Map[String, String], setIdle: Boolean => Unit): (Boolean, Option[Evaluator.State]) = { import ammonite.main.Cli + + val millHome = mill.util.Ctx.defaultHome val removed = Set("predef-code", "no-home-predef") var interactive = false @@ -49,10 +51,21 @@ object MillMain { c } ) - val millArgSignature = - Cli.genericSignature.filter(a => !removed(a.name)) :+ interactiveSignature - val millHome = mill.util.Ctx.defaultHome + + + var disableTicker = false + val disableTickerSignature = Arg[Config, Unit]( + "disable-ticker", None, + "Disable ticker log (e.g. short-lived prints of stages and progress bars)", + (c, v) =>{ + disableTicker = true + c + } + ) + + val millArgSignature = + Cli.genericSignature.filter(a => !removed(a.name)) ++ Seq(interactiveSignature, disableTickerSignature) Cli.groupArgs( args.toList, @@ -89,6 +102,7 @@ object MillMain { s"""import $$file.build, build._ |implicit val replApplyHandler = mill.main.ReplApplyHandler( | ammonite.ops.Path($tqs${cliConfig.home.toIO.getCanonicalPath.replaceAllLiterally("$", "$$")}$tqs), + | $disableTicker, | interp.colors(), | repl.pprinter(), | build.millSelf.get, @@ -102,7 +116,8 @@ object MillMain { ) val runner = new mill.main.MainRunner( - config.copy(colored = Some(mainInteractive)), + config.copy(colored = config.colored orElse Option(mainInteractive)), + disableTicker, stdout, stderr, stdin, stateCache, env, diff --git a/main/src/mill/main/MainModule.scala b/main/src/mill/main/MainModule.scala index 367f241c..f7d4e7b9 100644 --- a/main/src/mill/main/MainModule.scala +++ b/main/src/mill/main/MainModule.scala @@ -173,7 +173,7 @@ trait MainModule extends mill.Module{ // When using `show`, redirect all stdout of the evaluated tasks so the // printed JSON is the only thing printed to stdout. log = evaluator.log match{ - case PrintLogger(c1, c2, o, i, e, in) => PrintLogger(c1, c2, e, i, e, in) + case PrintLogger(c1, d, c2, o, i, e, in) => PrintLogger(c1, d, c2, e, i, e, in) case l => l } ), diff --git a/main/src/mill/main/MainRunner.scala b/main/src/mill/main/MainRunner.scala index bf0d5901..30a23632 100644 --- a/main/src/mill/main/MainRunner.scala +++ b/main/src/mill/main/MainRunner.scala @@ -18,6 +18,7 @@ import scala.annotation.tailrec * `scriptCodeWrapper` or with a persistent evaluator between runs. */ class MainRunner(val config: ammonite.main.Cli.Config, + disableTicker: Boolean, outprintStream: PrintStream, errPrintStream: PrintStream, stdIn: InputStream, @@ -74,6 +75,7 @@ class MainRunner(val config: ammonite.main.Cli.Config, stateCache, new PrintLogger( colors != ammonite.util.Colors.BlackWhite, + disableTicker, colors, outprintStream, errPrintStream, diff --git a/main/src/mill/main/ReplApplyHandler.scala b/main/src/mill/main/ReplApplyHandler.scala index 22a247cc..95949fa8 100644 --- a/main/src/mill/main/ReplApplyHandler.scala +++ b/main/src/mill/main/ReplApplyHandler.scala @@ -11,6 +11,7 @@ import mill.util.Strict.Agg import scala.collection.mutable object ReplApplyHandler{ def apply[T](home: Path, + disableTicker: Boolean, colors: ammonite.util.Colors, pprinter0: pprint.PPrinter, rootModule: mill.define.BaseModule, @@ -24,6 +25,7 @@ object ReplApplyHandler{ rootModule, new mill.util.PrintLogger( colors != ammonite.util.Colors.BlackWhite, + disableTicker, colors, System.out, System.err, diff --git a/main/test/src/mill/util/ScriptTestSuite.scala b/main/test/src/mill/util/ScriptTestSuite.scala index a23b34fe..0b0c4011 100644 --- a/main/test/src/mill/util/ScriptTestSuite.scala +++ b/main/test/src/mill/util/ScriptTestSuite.scala @@ -14,8 +14,9 @@ abstract class ScriptTestSuite(fork: Boolean) extends TestSuite{ val wd = workspacePath / buildPath / up val stdOutErr = new PrintStream(new ByteArrayOutputStream()) val stdIn = new ByteArrayInputStream(Array()) + val disableTicker = false lazy val runner = new mill.main.MainRunner( - ammonite.main.Cli.Config(wd = wd), + ammonite.main.Cli.Config(wd = wd), disableTicker, stdOutErr, stdOutErr, stdIn, None, Map.empty, b => () ) diff --git a/main/test/src/mill/util/TestEvaluator.scala b/main/test/src/mill/util/TestEvaluator.scala index bcfcc9bf..d62e921c 100644 --- a/main/test/src/mill/util/TestEvaluator.scala +++ b/main/test/src/mill/util/TestEvaluator.scala @@ -26,7 +26,7 @@ class TestEvaluator[T <: TestUtil.BaseModule](module: T) // val logger = DummyLogger val logger = new PrintLogger( - true, + colored = true, disableTicker=false, ammonite.util.Colors.Default, System.out, System.out, System.err, System.in ) val evaluator = new Evaluator(Ctx.defaultHome, outPath, TestEvaluator.externalOutPath, module, logger) diff --git a/scalalib/src/mill/scalalib/TestRunner.scala b/scalalib/src/mill/scalalib/TestRunner.scala index a014df0c..0e4506a3 100644 --- a/scalalib/src/mill/scalalib/TestRunner.scala +++ b/scalalib/src/mill/scalalib/TestRunner.scala @@ -31,6 +31,7 @@ object TestRunner { val ctx = new Ctx.Log with Ctx.Home { val log = PrintLogger( colored == "true", + true, if(colored == "true") Colors.Default else Colors.BlackWhite, System.out, diff --git a/scalalib/worker/src/mill/scalalib/worker/ScalaWorker.scala b/scalalib/worker/src/mill/scalalib/worker/ScalaWorker.scala index 9b14757c..2f3ca1b9 100644 --- a/scalalib/worker/src/mill/scalalib/worker/ScalaWorker.scala +++ b/scalalib/worker/src/mill/scalalib/worker/ScalaWorker.scala @@ -35,7 +35,7 @@ class ScalaWorker(ctx0: mill.util.Ctx, val compiledDest = workingDir / 'compiled if (!exists(workingDir)) { - println("Compiling compiler interface...") + ctx0.log.info("Compiling compiler interface...") mkdir(workingDir) mkdir(compiledDest) -- cgit v1.2.3