diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-02-24 15:35:24 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-02-24 17:13:03 -0800 |
commit | 139afd965ea072f8216b56126fb08dc8a44ebac4 (patch) | |
tree | e0e54b719479cf5d0be311887433a4e8d4d48c0f /main | |
parent | e76a4eda93e96e6817ab4f337f567fd325efe545 (diff) | |
download | mill-139afd965ea072f8216b56126fb08dc8a44ebac4.tar.gz mill-139afd965ea072f8216b56126fb08dc8a44ebac4.tar.bz2 mill-139afd965ea072f8216b56126fb08dc8a44ebac4.zip |
Implement `-i` flag to allow interactive usage
Diffstat (limited to 'main')
-rw-r--r-- | main/src/mill/Main.scala | 18 | ||||
-rw-r--r-- | main/src/mill/modules/Jvm.scala | 6 |
2 files changed, 21 insertions, 3 deletions
diff --git a/main/src/mill/Main.scala b/main/src/mill/Main.scala index ee055d64..4adb8d9c 100644 --- a/main/src/mill/Main.scala +++ b/main/src/mill/Main.scala @@ -2,7 +2,7 @@ package mill import java.io.{InputStream, OutputStream, PrintStream} -import ammonite.main.Cli.{formatBlock, genericSignature, replSignature} +import ammonite.main.Cli._ import ammonite.ops._ import ammonite.util.Util import mill.clientserver.{Client, FileLocks} @@ -102,12 +102,26 @@ object Main { import ammonite.main.Cli val removed = Set("predef-code", "home", "no-home-predef") - val millArgSignature = Cli.genericSignature.filter(a => !removed(a.name)) + var interactive = false + val interactiveSignature = Arg[Config, Unit]( + "interactive", Some('i'), + "Run Mill in interactive mode, suitable for opening REPLs and taking user input", + (c, v) =>{ + interactive = true + c + } + ) + val millArgSignature = + Cli.genericSignature.filter(a => !removed(a.name)) :+ interactiveSignature + Cli.groupArgs( args.toList, millArgSignature, Cli.Config(remoteLogging = false) ) match{ + case _ if interactive => + stderr.println("-i/--interactive must be passed in as the first argument") + (false, None) case Left(msg) => System.err.println(msg) (false, None) diff --git a/main/src/mill/modules/Jvm.scala b/main/src/mill/modules/Jvm.scala index 2d351c18..fb2661e1 100644 --- a/main/src/mill/modules/Jvm.scala +++ b/main/src/mill/modules/Jvm.scala @@ -35,7 +35,11 @@ object Jvm { jvmArgs ++ Vector("-cp", classPath.mkString(":"), mainClass) ++ mainArgs - + baseInteractiveSubprocess(commandArgs, envArgs, workingDir) + } + def baseInteractiveSubprocess(commandArgs: Seq[String], + envArgs: Map[String, String], + workingDir: Path) = { val builder = new java.lang.ProcessBuilder() import collection.JavaConverters._ for ((k, v) <- envArgs){ |