summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorRobby <robby@santoslab.org>2018-03-20 06:50:23 -0500
committerGitHub <noreply@github.com>2018-03-20 06:50:23 -0500
commit672642e4694088c2c0aee6e408de079318bcd4db (patch)
treed2dc8ac4fed59dc825e58098486727270634bb47 /main
parent4fea16eaf227a4b0bb729e9f1ab7b45ed0d0a0f0 (diff)
downloadmill-672642e4694088c2c0aee6e408de079318bcd4db.tar.gz
mill-672642e4694088c2c0aee6e408de079318bcd4db.tar.bz2
mill-672642e4694088c2c0aee6e408de079318bcd4db.zip
Batch (.bat) file generation for assembly, launcher, and release (#243)
Diffstat (limited to 'main')
-rw-r--r--main/src/mill/Main.scala6
-rw-r--r--main/src/mill/modules/Jvm.scala31
2 files changed, 26 insertions, 11 deletions
diff --git a/main/src/mill/Main.scala b/main/src/mill/Main.scala
index a899c8c6..0844e485 100644
--- a/main/src/mill/Main.scala
+++ b/main/src/mill/Main.scala
@@ -27,8 +27,12 @@ object ServerMain extends mill.clientserver.ServerMain[Evaluator.State]{
object Main {
def main(args: Array[String]): Unit = {
+ val as = args match {
+ case Array(s, _*) if s == "-i" || s == "--interactive" => args.tail
+ case _ => args
+ }
val (result, _) = main0(
- args,
+ as,
None,
ammonite.Main.isInteractive(),
System.in,
diff --git a/main/src/mill/modules/Jvm.scala b/main/src/mill/modules/Jvm.scala
index 2ded95db..9c63d108 100644
--- a/main/src/mill/modules/Jvm.scala
+++ b/main/src/mill/modules/Jvm.scala
@@ -238,7 +238,8 @@ object Jvm {
def createAssembly(inputPaths: Agg[Path],
mainClass: Option[String] = None,
prependShellScript: String = "",
- base: Option[Path] = None)
+ base: Option[Path] = None,
+ isWin: Boolean = scala.util.Properties.isWin)
(implicit ctx: Ctx.Dest) = {
val tmp = ctx.dest / "out-tmp.jar"
@@ -279,8 +280,9 @@ object Jvm {
// Prepend shell script and make it executable
if (prependShellScript.isEmpty) mv(tmp, output)
else{
+ val lineSep = if (isWin) "\r\n" else "\n"
val outputStream = newOutputStream(output.toNIO)
- IO.stream(new ByteArrayInputStream((prependShellScript + "\n").getBytes()), outputStream)
+ IO.stream(new ByteArrayInputStream((prependShellScript + lineSep).getBytes()), outputStream)
IO.stream(read.getInputStream(tmp), outputStream)
outputStream.close()
@@ -320,23 +322,32 @@ object Jvm {
}
- def launcherShellScript(mainClass: String,
+ def launcherShellScript(isWin: Boolean,
+ mainClass: String,
classPath: Agg[String],
jvmArgs: Seq[String]) = {
- s"""#!/usr/bin/env sh
- |
- |exec java ${jvmArgs.mkString(" ")} $$JAVA_OPTS -cp "${classPath.mkString(":")}" $mainClass "$$@"
- """.stripMargin
+ val cp = classPath.mkString(File.pathSeparator)
+ if (isWin)
+ s"""@echo off
+ |
+ |java ${jvmArgs.mkString(" ")} %JAVA_OPTS% -cp "$cp" $mainClass %*
+ """.stripMargin.split('\n').mkString("\r\n")
+ else
+ s"""#!/usr/bin/env sh
+ |
+ |exec java ${jvmArgs.mkString(" ")} $$JAVA_OPTS -cp "$cp" $mainClass "$$@"
+ """.stripMargin
}
def createLauncher(mainClass: String,
classPath: Agg[Path],
jvmArgs: Seq[String])
(implicit ctx: Ctx.Dest)= {
- val outputPath = ctx.dest / "run"
+ val isWin = scala.util.Properties.isWin
+ val outputPath = ctx.dest / (if (isWin) "run.bat" else "run")
- write(outputPath, launcherShellScript(mainClass, classPath.map(_.toString), jvmArgs))
+ write(outputPath, launcherShellScript(isWin, mainClass, classPath.map(_.toString), jvmArgs))
- if (!scala.util.Properties.isWin) {
+ if (!isWin) {
val perms = Files.getPosixFilePermissions(outputPath.toNIO)
perms.add(PosixFilePermission.GROUP_EXECUTE)
perms.add(PosixFilePermission.OWNER_EXECUTE)