summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml8
-rw-r--r--clientserver/src/mill/clientserver/Client.scala9
-rw-r--r--clientserver/src/mill/clientserver/ClientServer.scala1
-rw-r--r--clientserver/src/mill/clientserver/Server.scala6
-rw-r--r--main/src/mill/Main.scala4
-rw-r--r--main/test/src/mill/util/ScriptTestSuite.scala2
6 files changed, 21 insertions, 9 deletions
diff --git a/.travis.yml b/.travis.yml
index 83ff9b91..57a75bef 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,10 +18,10 @@ matrix:
env: CI_SCRIPT=ci/test-mill-built.sh
- stage: build
env: CI_SCRIPT=ci/test-mill-release.sh
-# - stage: release
-# env: CI_SCRIPT="ci/on-master.py ci/release.sh"
-# - stage: release
-# env: CI_SCRIPT="ci/on-master.py ci/publish-docs.sh"
+ - stage: release
+ env: CI_SCRIPT="ci/on-master.py ci/release.sh"
+ - stage: release
+ env: CI_SCRIPT="ci/on-master.py ci/publish-docs.sh"
script:
- git fetch --unshallow --tags
diff --git a/clientserver/src/mill/clientserver/Client.scala b/clientserver/src/mill/clientserver/Client.scala
index 1a4b1539..5e1af0aa 100644
--- a/clientserver/src/mill/clientserver/Client.scala
+++ b/clientserver/src/mill/clientserver/Client.scala
@@ -33,7 +33,7 @@ class Client(lockBase: String,
stdin: InputStream,
stdout: OutputStream,
stderr: OutputStream) extends ClientServer(lockBase){
- def run(args: Array[String]) = {
+ def run(args: Array[String]): Int = {
val f = new FileOutputStream(runFile)
ClientServer.writeArgs(System.console() != null, args, f)
f.close()
@@ -55,5 +55,12 @@ class Client(lockBase: String,
locks.serverLock.await()
+ try{
+ new BufferedReader(
+ new InputStreamReader(
+ new FileInputStream(exitCodePath)
+ )
+ ).readLine().toInt
+ } catch{case e: Throwable => 1}
}
}
diff --git a/clientserver/src/mill/clientserver/ClientServer.scala b/clientserver/src/mill/clientserver/ClientServer.scala
index f775f8d6..a7de2ba3 100644
--- a/clientserver/src/mill/clientserver/ClientServer.scala
+++ b/clientserver/src/mill/clientserver/ClientServer.scala
@@ -7,6 +7,7 @@ import scala.annotation.tailrec
class ClientServer(lockBase: String){
val ioPath = lockBase + "/io"
+ val exitCodePath = lockBase + "/exitCode"
val logFile = new java.io.File(lockBase + "/log")
val runFile = new java.io.File(lockBase + "/run")
}
diff --git a/clientserver/src/mill/clientserver/Server.scala b/clientserver/src/mill/clientserver/Server.scala
index 52549f69..de8097fb 100644
--- a/clientserver/src/mill/clientserver/Server.scala
+++ b/clientserver/src/mill/clientserver/Server.scala
@@ -69,7 +69,7 @@ class Server[T](lockBase: String,
try {
val stdout = new PrintStream(new ProxyOutputStream(currentOutErr, 0), true)
val stderr = new PrintStream(new ProxyOutputStream(currentOutErr, 1), true)
- val (_, newStateCache) = sm.main0(
+ val (result, newStateCache) = sm.main0(
args,
sm.stateCache,
interactive,
@@ -79,6 +79,10 @@ class Server[T](lockBase: String,
)
sm.stateCache = newStateCache
+ java.nio.file.Files.write(
+ java.nio.file.Paths.get(exitCodePath),
+ (if (result) 0 else 1).toString.getBytes
+ )
} catch{case WatchInterrupted(sc: Option[T]) =>
sm.stateCache = sc
} finally{
diff --git a/main/src/mill/Main.scala b/main/src/mill/Main.scala
index 482de0bf..d6a908d3 100644
--- a/main/src/mill/Main.scala
+++ b/main/src/mill/Main.scala
@@ -48,7 +48,7 @@ object ClientMain {
.start()
}
def main(args: Array[String]): Unit = {
- Client.WithLock(1) { lockBase =>
+ val exitCode = Client.WithLock(1) { lockBase =>
val c = new Client(
lockBase,
() => initServer(lockBase),
@@ -59,7 +59,7 @@ object ClientMain {
)
c.run(args)
}
- System.exit(0)
+ System.exit(exitCode)
}
}
object ServerMain extends mill.clientserver.ServerMain[Evaluator.State]{
diff --git a/main/test/src/mill/util/ScriptTestSuite.scala b/main/test/src/mill/util/ScriptTestSuite.scala
index 1f89ab8d..6bc96540 100644
--- a/main/test/src/mill/util/ScriptTestSuite.scala
+++ b/main/test/src/mill/util/ScriptTestSuite.scala
@@ -21,7 +21,7 @@ abstract class ScriptTestSuite(fork: Boolean) extends TestSuite{
if (!fork) runner.runScript(workspacePath / "build.sc", s.toList)
else{
try {
- %%(home / "mill-release", s)(workspacePath)
+ %%(home / "mill-release", "-i", s)(workspacePath)
true
}catch{case e: Throwable => false}
}